Am 15.06.2011 22:16, schrieb Dominik Szczerba:
I use Debian SID 64bit which is similar to Ubuntu, but not the same :)
The "problem" (if it really is one) is that debian does ship the libraries
with another naming, so FindBoost will select the library without version
number.
That's very interesting. My Boost_LIBRARIES according to cmake are:
"optimized;/usr/lib/libboost_thread-mt.so;debug;/usr/lib/libboost_thread-mt.so"
but my stuff gets linked to the ones with versions in the name, proved
by ldd:

ldd bin/vtkmyFilteringPython.so | grep boost
        libboost_thread.so.1.40.0 =>  /usr/lib/libboost_thread.so.1.40.0
(0x00007f51c7a8e000)

Very strange.

I looked in the script FindBoost.cmake and saw the problem in the lines 717
- 723 (and 728 - 735). Here, the libraries with the version number are
listed before the ones without version number.
Does one always prefer the libraries with version number? Or should the
order changed?
I think the best way is to use both:
If the user wants exactly this version, the find-library command should use
ONLY libraries with names, and if not it should look for libraries without
the number first.

What do you think about this idea?
I see advantages and disadvantages of both options and I do agree with
you that a user should have a choice to pick one.

Best regards,
Dominik

This behavior is really strange and I tested it in the last 10 minutes.
CMake says:
boost libs: /usr/lib/libboost_system-mt.so

Compiling and linking with verbose reveals the link command:
/usr/bin/c++ CMakeFiles/test.dir/test.cpp.o -o test -rdynamic -lboost_system-mt

But a ldd on test gives:
andreas[515:3]:ldd test
        linux-vdso.so.1 =>  (0x00007fff2fb4a000)
libboost_system.so.1.46.1 => /usr/lib/libboost_system.so.1.46.1 (0x00007f525e8c7000)
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f525e5bd000)
        libm.so.6 => /lib/libm.so.6 (0x00007f525e33a000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00007f525e124000)
        libc.so.6 => /lib/libc.so.6 (0x00007f525ddc3000)
        librt.so.1 => /lib/librt.so.1 (0x00007f525dbba000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x00007f525d99e000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f525eaf5000)

I don't install, only build the executable.

Does anybody have an idea?

Regards,
Andreas
_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to