[bjam][mingw] signals fails to build + solution
Hi all, 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
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
participants (2)
-
Douglas Gregor
-
Paul