Hi Paul, I'm forwarding this on to the Boost.Build list. Your fix looks correct to me, but they'll know for sure. Thanks! Doug On Dec 9, 2005, at 12:29 AM, Paul wrote:
I had a problem with boost 1.33.1, building it on windows XP inside the msys (MinGW) environment.
The link step generates this command:
"g++" "-Wl,--enable-auto-image-base" "-Wl,--exclude- symbols,_bss_end__:_bss_start__:_data_end__:_data_start__"
"-Wl,--out-implib,..\..\..\bin\boost\libs\signals\build \boost_signals.dll\mingw\debug\boost_signals-mgw-d-1_33_1.lib" -g -shared -Wl,--allow-multiple-definition -mno-cygwin -o "..\..\..\bin\boost\libs\signals\build\boost_signals.dll\mingw\debug \boost_signals-mgw-d-1_33_1.dll" -L"" "..\..\..\bin\boost\libs\signals\build\boost_signals.dll\mingw\debug \trackable.obj" "..\..\..\bin\boost\libs\signals\build\boost_signals.dll\mingw\debug \connection.obj" "..\..\..\bin\boost\libs\signals\build\boost_signals.dll\mingw\debug \named_slot_map.obj" "..\..\..\bin\boost\libs\signals\build\boost_signals.dll\mingw\debug \signal_base.obj" "..\..\..\bin\boost\libs\signals\build\boost_signals.dll\mingw\debug \slot.obj"
and it fails, giving a message about not being able to find a symbol for a method in trackable.
I edited tools/build/v1/mingw-tools.jam and added this line: flags mingw STDLIBPATH : $(GCC_BIN_DIRECTORY) ; + flags mingw LIBPATH : $(GCC_BIN_DIRECTORY) ; }
And tried again. This time it worked, with the following command:
"g++" "-Wl,--enable-auto-image-base" "-Wl,--exclude- symbols,_bss_end__:_bss_start__:_data_end__:_data_start__"
"-Wl,--out-implib,..\..\..\bin\boost\libs\signals\build \boost_signals.dll\mingw\release\boost_signals-mgw-1_33_1.lib" -s -shared -Wl,--allow-multiple-definition -mno-cygwin -o "..\..\..\bin\boost\libs\signals\build\boost_signals.dll\mingw \release\boost_signals-mgw-1_33_1.dll" -L"" -L"" "..\..\..\bin\boost\libs\signals\build\boost_signals.dll\mingw \release\trackable.obj" "..\..\..\bin\boost\libs\signals\build\boost_signals.dll\mingw \release\connection.obj" "..\..\..\bin\boost\libs\signals\build\boost_signals.dll\mingw \release\named_slot_map.obj" "..\..\..\bin\boost\libs\signals\build\boost_signals.dll\mingw \release\signal_base.obj" "..\..\..\bin\boost\libs\signals\build\boost_signals.dll\mingw \release\slot.obj"
The difference is that there is an EXTRA -L"" in the command.
I suspect that having any -L"" is a bad idea, and if there is no parameter, it should be omitted all together. I bet this command works ONLY because, to g++, it looks like g++ blah blah -L"-L" ie the second -L becomes the parameter for the first -L (spaces are allowed after the -L flag).
I dont understand bjam's Jamfiles well enough to fix this properly. Can someone help put together a patch for this?
Thanks Paul _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users