[CMake] binary contains an unresolvable reference to symbol sym
Mathieu Malaterre
mathieu.malaterre at gmail.com
Thu Apr 12 08:03:14 EDT 2012
Dear all,
I am trying to solve one remaining issue with one of my package in
debian [1]. The report says basically "binary contains an
unresolvable reference to symbol sym". According to the documentation
[2]:
The indicated symbol has not been found in the libraries linked
with the binary. The binary is most likely a plugin and the sym-
bol is probably provided by the program that loads this plugin.
In theory a plugin doesn't have any SONAME but this binary does
have one and as such it could not be clearly identified as such.
However the fact that the binary is stored in a non-public
directory is a strong indication that's it's not a normal shared
library. If the binary is really a plugin, then disregard this
warning. But there's always the possibility that it's a real
library and that programs linking to it are using an RPATH so
that the dynamic loader finds it. In that case, the library is
broken and needs to be fixed.
The solution seems pretty straightforward: remove the -soname command
line switch when generating the python module. Looking at:
Modules/CMakeCInformation.cmake I can see:
...
IF(NOT CMAKE_C_CREATE_SHARED_MODULE)
SET(CMAKE_C_CREATE_SHARED_MODULE ${CMAKE_C_CREATE_SHARED_LIBRARY})
ENDIF(NOT CMAKE_C_CREATE_SHARED_MODULE)
...
So basically /module/ and /shared/ behave exactly the same on *nix
platform, correct ? If so how is someone supposed to remove the
explicit setting of CMAKE_SHARED_LIBRARY_SONAME_C_FLAG in such case ?
For example on my system I can see:
$ readelf -d /usr/lib/pyshared/python2.7/_gdcmswig.so | grep SONAME
0x000000000000000e (SONAME) Library soname: [_gdcmswig.so]
While in another package (using python distutils/setup.py):
$ readelf -d /usr/lib/python2.7/dist-packages/libtiff/tif_lzw.so | grep SONAME
-> no output
Thanks much in advance,
[1] https://buildd.debian.org/~brlink/packages/g/gdcm.html
[2] http://man.he.net/man1/dpkg-shlibdeps
--
Mathieu
More information about the CMake
mailing list