|
Boost Users : |
From: Paul (elegant_dice_at_[hidden])
Date: 2005-12-09 00:29:56
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
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net