|
Boost Users : |
Subject: [Boost-users] Boost link error with mingw
From: Eugen Dedu (Eugen.Dedu_at_[hidden])
Date: 2010-07-25 13:01:24
Hi everybody,
We compile ekiga for windows and boost signals is one of its
dependencies, so we need to compile it for windows. I use gcc-mingw32
from debian unstable (gcc configured for mingw, version 4.4.4-0.1) and I
do like this:
- download boost 1.43.0
- echo "using gcc : : i586-mingw32msvc-gcc : ;"
>$(BOOST_DIR)/user-config.jam
- cd $(BOOST_DIR); ./bjam $(confboost)
with:
confboost := --user-config=user-config.jam --layout=system
variant=release threading=multi link=shared runtime-link=shared
target-os=windows threadapi=win32 --without-math --without-python
--without-mpi --without-serialization --without-test --without-thread
--without-wave --without-date_time --without-system --without-filesystem
--without-graph --without-graph_parallel --without-iostreams
--without-program_options --without-regex --without-random -q stage
1. I have a link error:
Component configuration:
- date_time : not building
- filesystem : not building
- graph : not building
- graph_parallel : not building
- iostreams : not building
- math : not building
- mpi : not building
- program_options : not building
- python : not building
- random : not building
- regex : not building
- serialization : not building
- signals : building
- system : not building
- test : not building
- thread : not building
- wave : not building
...patience...
...found 601 targets...
...updating 4 targets...
gcc.link.dll
bin.v2/libs/signals/build/gcc-mingw-4.4.4/release/target-os-windows/threadapi-win32/threading-multi/libboost_signals.dll.a
Creating library file:
bin.v2/libs/signals/build/gcc-mingw-4.4.4/release/target-os-windows/threadapi-win32/threading-multi/libboost_signals.dll.abin.v2/libs/signals/build/gcc-mingw-4.4.4/release/target-os-windows/threadapi-win32/threading-multi/trackable.o:trackable.cpp:(.text+0xc):
undefined reference to `___gxx_personality_sj0'
bin.v2/libs/signals/build/gcc-mingw-4.4.4/release/target-os-windows/threadapi-win32/threading-multi/trackable.o:trackable.cpp:(.text+0x6d):
undefined reference to `operator delete(void*)'
bin.v2/libs/signals/build/gcc-mingw-4.4.4/release/target-os-windows/threadapi-win32/threading-multi/trackable.o:trackable.cpp:(.text+0xac):
undefined reference to `___gxx_personality_sj0'
bin.v2/libs/signals/build/gcc-mingw-4.4.4/release/target-os-windows/threadapi-win32/threading-multi/trackable.o:trackable.cpp:(.text+0x10d):
undefined reference to `operator delete(void*)'
[...]
I have discovered that the link can proceed if I do:
- echo "using gcc : : i586-mingw32msvc-g++ : ;"
>$(BOOST_DIR)/user-config.jam
- cd $(BOOST_DIR); ./bjam $(confboost)
i.e. compile again after changing gcc to g++, but of course this is a
workaround. How to solve it properly?
(here is the output after changing to g++:
[..]
- thread : not building
- wave : not building
...patience...
...found 601 targets...
...updating 4 targets...
gcc.link.dll
bin.v2/libs/signals/build/gcc-mingw-4.4.4/release/target-os-windows/threadapi-win32/threading-multi/libboost_signals.dll.a
Creating library file:
bin.v2/libs/signals/build/gcc-mingw-4.4.4/release/target-os-windows/threadapi-win32/threading-multi/libboost_signals.dll.a
common.copy stage/lib/libboost_signals.dll.a
common.copy stage/lib/libboost_signals.dll
...updated 4 targets...
)
Second, I execute afterwards:
- cd $(BOOST_DIR); ./bjam $(confboost) install
2. Is $(confboost) still needed or not for install?
3. This command does nothing for about 1 minute 30 secs (I thought at
the beginning that it simply does not work, fortunately I let it execute
more than 10 seconds to see what happens), and only afterwards copy the
files. Executing through strace shows many lines like this:
brk(0x6116000) = 0x6116000
and these lines take almost all the installation time.
Best regards,
-- Eugen Dedu
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