[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Discuss-gnuradio] cmake build not placing lib*.so properly
From: |
Josh Blum |
Subject: |
Re: [Discuss-gnuradio] cmake build not placing lib*.so properly |
Date: |
Fri, 13 Jan 2012 11:49:58 -0800 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:8.0) Gecko/20111124 Thunderbird/8.0 |
On 01/13/2012 11:34 AM, Marcus D. Leech wrote:
> On 13/01/12 02:21 PM, Josh Blum wrote:
>>
>> On 01/13/2012 11:01 AM, Marcus D. Leech wrote:
>>
>>> Observe the following directory listing:
>>>
>>> address@hidden ~]$ ls -l /usr/local/lib/libgnuradio-core*
>>> lrwxrwxrwx 1 root root 34 2012-01-13 13:56
>>> /usr/local/lib/libgnuradio-core-3.5.2git.so.0 ->
>>> libgnuradio-core-3.5.2git.so.0.0.0
>>> lrwxrwxrwx 1 root root 34 2012-01-13 13:56
>>> /usr/local/lib/libgnuradio-core.so -> libgnuradio-core-3.5.2git.so.0.0.0
>>> -rwxr-xr-x 1 root root 2108365 2012-01-13 13:45
>>> /usr/local/lib/libgnuradio-core.so.0.0.0
>>>
>>> Notice how libgnuradio-core.so points off to nothingness
>>>
>>> Now, gnuradio-based *applications* seem to be just fine with this, after
>>> running ldconfig.
>>>
>>> But, for example, if you pull something, like gr-stream-tags off of
>>> CGRAN, and try to build the result, it
>>> will barf on a linker error, due to not being able to resolve
>>> "-lgnuradio-core" (and others).
>>>
>>> So the question is, where is cmake getting its notion of how to name
>>> these things, and set up the
>>> symlink hierarchy? If it comes from the ".pc" files, I'll note that
>>> they haven't been updated since
>>> I last ran an autotools build, 5 days ago. Does cmake update the
>>> ".pc" files? How is this
>>> dangling symlink problem happening?
>>>
>>>
>>>
>> The weirdness comes from this code:
>> http://gnuradio.org/cgit/gnuradio.git/tree/cmake/Modules/GrMiscUtils.cmake?h=maint#n151
>>
>> The symlinks looks like this on my system:
>> http://pastebin.com/Q4Vuz8Kb
>>
>> What is your os? I think this line for you isnt changing the library
>> target name to ${target}-${LIBVER}. Does that sound like the issue?
>>
>> set_target_properties(${target} PROPERTIES LIBRARY_OUTPUT_NAME
>> ${target}-${LIBVER} SOVERSION "0.0.0")
>>
>> -Josh
>>
>>
>>
> It's a Fedora-12 32-bit machine. With cmake-2.6.4-5.fc12.i686
>
Thats an old fedora :-)
> That could be the issue, yes. But I'm not a Cmake guy at all.
>
>
>
This is part of our special LIBRARY_EXTRAS mode. You can disable it with
-DLIBRARY_EXTRAS=OFF just so you know, but I think the following patch
will solve the issue...
So, it like cmake 2.6 doesnt have LIBRARY_OUTPUT_NAME, but it does have
OUTPUT_NAME. They are both ways to rename the target, one being specific
to a library and only possible with 2.8 and up. Try this patch:
http://pastebin.com/kXKgJPF7
-josh