Boost logo

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