Multiple build errors of boost 1.33.1 on Linux

Hello, I tried to compile boost with gcc 3.4.x and 4.0.2 on Linux. With the latter I finally managed to build boost but let's come to this later. I tried gcc 3.4.2 and 3.4.4 both producing the following errors: `.L17959' referenced in section `.rodata' of bin/boost/libs/regex/build/libboost_regex.so/gcc/release/shared-linkable-true/ instances.o: defined in discarded section `.gnu.linkonce.t._ZN5boost9re_detail12perl_matcherIN9__gnu_cxx17__normal_iterator IPKcSsEESaINS_9sub_matchIS6_EEENS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE15match_startmarkEv' of bin/boost/libs/regex/ build/libboost_regex.so/gcc/release/shared-linkable-true/instances.o ... see the complete logfile at http://lospalmos.net/boost-logs/boost-gcc-3.4.4.log This happens with different versions of binutils. With gcc4 these linker errors vanished, but I figured out that there are hardcoded depencies on libicu even when the build system claims that it has switched ICU off. So the log says: Building Boost.Regex with the optional Unicode/ICU support disabled. Please refer to the Boost.Regex documentation for more information (and if you don't know what ICU is then you probably don't need it). but later I found that errors on 8 targets: /usr/lib/gcc/i586-unknown-linux-gnu/4.0.2/../../../../i586-unknown-linux-gnu/bin/ld: cannot find -licui18n collect2: ld returned 1 exit status see the complete log at http://lospalmos.net/boost-logs/boost-gcc-4.0.2.log I "fixed" this by installing ICU but still consider it a bug. Cheers, Daniel who is currently working on the boost package for ROCK Linux

Daniel Jahre wrote:
Hello,
I tried to compile boost with gcc 3.4.x and 4.0.2 on Linux. With the latter I finally managed to build boost but let's come to this later.
I tried gcc 3.4.2 and 3.4.4 both producing the following errors: `.L17959' referenced in section `.rodata' of bin/boost/libs/regex/build/libboost_regex.so/gcc/release/shared-linkable-true/ instances.o: defined in discarded section `.gnu.linkonce.t._ZN5boost9re_detail12perl_matcherIN9__gnu_cxx17__normal_iterator IPKcSsEESaINS_9sub_matchIS6_EEENS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE15match_startmarkEv' of bin/boost/libs/regex/ build/libboost_regex.so/gcc/release/shared-linkable-true/instances.o ... see the complete logfile at http://lospalmos.net/boost-logs/boost-gcc-3.4.4.log This happens with different versions of binutils.
This surprises me. Boost was tested against gcc 3.4.4 and gcc 3.4.5 before the release. Even though you wrote you used different versions of binutils I still suspect the problem could be the ld version. gcc 3.4.4 and gcc 3.4.5 work fine for me (using ld 2.15 on Debian and ld 2.16.1 on Gentoo) (gcc 3.4.5 was used with both versions of ld). It also doesn't matter whether I build Boost on a 32 bit system or on a 64 bit system. I seem to recall from other discussions that similar errors went away once people switched to a different version of binutils.
With gcc4 these linker errors vanished, but I figured out that there are hardcoded depencies on libicu even when the build system claims that it has switched ICU off.
That one surprises me even more. Boost was tested in ICU-less environments without the problems you report here. Regards, m Send instant messages to your online friends http://au.messenger.yahoo.com

On Tuesday 10 January 2006 21:07, Martin Wille wrote:
With gcc4 these linker errors vanished, but I figured out that there are hardcoded depencies on libicu even when the build system claims that it has switched ICU off.
That one surprises me even more. Boost was tested in ICU-less environments without the problems you report here.
I have no idea on which platforms these tests were made. On Linux I can reproduce this error, so perhaps someone wants to give it a try. I still have the complete log on http://lospalmos.net/boost-logs/boost-gcc-4.0.2.log fo those who need complete build logs for error detection. Since boost uses a build system of its own I do not have the time to debug these builds scripts. Cheers, Daniel

I have no idea on which platforms these tests were made. On Linux I can reproduce this error, so perhaps someone wants to give it a try. I still have the complete log on http://lospalmos.net/boost-logs/boost-gcc-4.0.2.log fo those who need complete build logs for error detection. Since boost uses a build system of its own I do not have the time to debug these builds scripts.
Let me be very clear about this: there are absolutely no hardcoded dependencies to ICU, looking though your build script I see that you have invoked bjam twice: the first invocation succeeds, the second fails because someone has added HAVE_ICU to the build environment, so the Jamfile just trusts that ICU is really there and attemps to build in support for it. Actually even if ICU is present this will fail: you have to decide to build either with or without ICU support in regex, you can't sit the two options side by side at present and build both (because the libs and object files all have the same name). That's something I should fix, but in the mean time I believe your problem is caused by your build script. HTH, John.
participants (3)
-
Daniel Jahre
-
John Maddock
-
Martin Wille