[CMake] unexpected INSTALL problems

Andreas Naumann Andreas-Naumann at gmx.net
Wed Jun 15 16:28:50 EDT 2011


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


More information about the CMake mailing list