|
Boost : |
From: Vladimir Prus (vladimir_at_[hidden])
Date: 2008-09-01 02:46:53
Alexander Dong Back Kim wrote:
> Hi members,
>
> I'm using both GCC 3.2 and 3.4 in different linux machines. The application
> uses a number of BOOST libraries such as program_options, iosterams, thread
> and system. When I compiled the application with GCC 3.4 (of course linking
> correct library files like "libboost_program_options-gcc34-mt"), it compiled
> well and works well. I did "ldd" to see what library files are linked... and
> it says...
>
> libpthread.so.0 => /lib/tls/libpthread.so.0 (0x0048a000)
> libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x005e8000)
> libm.so.6 => /lib/tls/libm.so.6 (0x00372000)
> libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00555000)
> libc.so.6 => /lib/tls/libc.so.6 (0x0023e000)
> /lib/ld-linux.so.2 (0x00224000)
To be pedantic, the above output has no indication that boost libraries are found,
it only says that the system libraries are found, which is hardly a surprise.
> Now, I compiled the same application and link different gcc version of boost
> library files because it uses GCC 3.2 instead. I compiled it and there was
> no compile-time error but it cannot be executed because it can't find the
> target library files. I did "ldd" for the application and now it has all the
> boost library files...
>
> libpthread.so.0 => /lib/tls/libpthread.so.0 (0x0038d000)
> libboost_system-gcc32-mt-1_35.so.1.35.0 => not found
> libboost_thread-gcc32-mt-1_35.so.1.35.0 => not found
> libboost_serialization-gcc32-mt-1_35.so.1.35.0 => not found
> libboost_program_options-gcc32-mt-1_35.so.1.35.0 => not found
> libboost_iostreams-gcc32-mt-1_35.so.1.35.0 => not found
> libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x00b8e000)
> libm.so.6 => /lib/tls/libm.so.6 (0x007a6000)
> libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00179000)
> libc.so.6 => /lib/tls/libc.so.6 (0x00182000)
> /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x00d66000)
>
> Both machine has the same boost 1.35. Only differences is they have
> different versions of GCC (3.2 and 3.4). Is there any idea or hints where
> this problem comes from???
This problem is caused by the fact that there's no file called
libboost_system-gcc32-mt-1_35.so.1.35.0 neither in standard system libraries
directories (such as /usr/lib) nor in directories in LD_LIBRARY_PATH.
You have to place the libraries somewhere where they can be found.
BTW, this issue is not specific to C++ Boost -- it's just regular shared linking
thing on Linux.
- Volodya
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk