Cmake build not placing lib*.so properly

Observe the following directory listing:

[[email protected] ~]$ 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?


Principal Investigator
Shirleys Bay Radio Astronomy Consortium
http://www.sbrac.org

On 01/13/2012 11:01 AM, Marcus D. Leech wrote:

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

On 13/01/12 02:21 PM, Josh B. wrote:

/usr/local/lib/libgnuradio-core.so -> libgnuradio-core-3.5.2git.so.0.0.0
will barf on a linker error, due to not being able to resolve

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

That could be the issue, yes. But I’m not a Cmake guy at all.


Principal Investigator
Shirleys Bay Radio Astronomy Consortium
http://www.sbrac.org

On 01/13/2012 11:34 AM, Marcus D. Leech wrote:

lrwxrwxrwx 1 root root 34 2012-01-13 13:56
CGRAN, and try to build the result, it

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 :slight_smile:

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