Linking problem with lld
Willem Jan Withagen
wjw at digiware.nl
Fri Feb 22 15:09:14 UTC 2019
Hi Ed ea,
In het ceph project, they started to use library versioning, so it seems.
But compiling/linking that now with Clang and lld I run into trouble
building the ceph-tools.
This is what I get back of one of the Devs:
--------------
My guess is that your linker doesn't support the new symbol versioning
exports and since the symbols are hidden by default they aren't visible
in the shared library. Previously there was a bug (since Luminous and
the switch the cmake) where every public and private symbol was exported
by librados.
We just need to know the magic words to use for your compiler/linker to
change the symbol visibility to public for the API methods.
--------------
Now I looked thru the options on both Clang and lld, but nothing
obviously springs into focus, as to add to change....
This is how librados is build:
/usr/bin/c++ -fPIC -Wall -Wtype-limits -Wignored-qualifiers
-Winit-self -Wpointer-arith -Werror=format-security -fno-strict-aliasing
-fsigned-char -Wno-unknown-pragmas -Wno-unused-function
-Wno-unused-local-typedef -Wno-varargs -Wno-gnu-designator
-Wno-missing-braces -Wno-parentheses -Wno-deprecated-register
-ftemplate-depth-1024 -Wnon-virtual-dtor -Wno-unknown-pragmas
-Wno-ignored-qualifiers -Wno-inconsistent-missing-override
-Wno-mismatched-tags -Wno-unused-private-field
-Wno-address-of-packed-member -DCEPH_DEBUG_MUTEX
-fdiagnostics-color=auto -fno-builtin-malloc -fno-builtin-calloc
-fno-builtin-realloc -fno-builtin-free -O0 -g
-Wno-unused-command-line-argument -fuse-ld=/usr/bin/ld.lld
-Wl,--exclude-libs,ALL
-Wl,--version-script=/home/jenkins/workspace/ceph-master/src/librados/librados.map
-shared -Wl,-soname,librados.so.2 -o ../../lib/librados.so.2.0.0
CMakeFiles/librados.dir/librados_c.cc.o
CMakeFiles/librados.dir/librados_cxx.cc.o
../common/CMakeFiles/common_buffer_obj.dir/buffer.cc.o -L/usr/local/lib
-Wl,-rpath,/usr/local/lib:/home/jenkins/workspace/ceph-master/build/lib:/usr/local/lib/nss:
../../lib/liblibrados_impl.a ../../lib/libosdc.a
../../lib/libceph-common.so.0 ../../lib/libcls_lock_client.a
/usr/local/lib/nss/libssl3.so /usr/local/lib/nss/libsmime3.so
/usr/local/lib/nss/libnss3.so /usr/local/lib/nss/libnssutil3.so
/usr/local/lib/libplds4.so /usr/local/lib/libplc4.so
/usr/local/lib/libnspr4.so /usr/local/lib/libcrypto.so -lrt
../../lib/libjson_spirit.a ../../lib/libcommon_utf8.a
../../lib/liberasure_code.a ../../lib/libcrc32.a ../../lib/libarch.a
/usr/local/lib/libboost_thread.so /usr/local/lib/libboost_chrono.so
/usr/local/lib/libboost_atomic.so /usr/local/lib/libboost_random.so
/usr/local/lib/libboost_system.so
/usr/local/lib/libboost_program_options.so
/usr/local/lib/libboost_date_time.so
/usr/local/lib/libboost_iostreams.so /usr/local/lib/libboost_regex.so
/usr/lib/libexecinfo.so /usr/local/lib/nss/libssl3.so
/usr/local/lib/nss/libsmime3.so /usr/local/lib/nss/libnss3.so
/usr/local/lib/nss/libnssutil3.so /usr/local/lib/libplds4.so
/usr/local/lib/libplc4.so /usr/local/lib/libnspr4.so -lpthread
Any suggestions on getting the hidden symbols to reapear is greatly
appriciated.
--WjW
More information about the freebsd-toolchain
mailing list