[oi-dev] how to determine link directory order for clang

<signaturebeforequotedtext></signaturebeforequotedtext> On 25.07.18 11:01, "Carsten Grzemba" <grzemba at contac-dt.de> wrote: > > I try to build a package with clang toolchain, but there I have some link troubles: > > cmake constructs a link.txt: > > /usr/bin/clang++ -m64 -O3 -std=c++11 -O3 -DNDEBUG -stdlib=libc++ -m64 CMakeFiles/iqstat.dir/src/iqstat.cpp.o -o iqstat -L/usr/gcc/6/lib/amd64 -lc++abi -lirods_client -lirods_plugin_dependencies -lirods_common /usr/lib/amd64/libavrocpp.so /usr/lib/amd64/libboost_filesystem.so /usr/lib/amd64/libboost_program_options.so /usr/lib/amd64/libboost_system.so /usr/lib/amd64/libjansson.so /usr/zeromq-4.2/lib/amd64/libzmq.so > > which in turn raises: > > /usr/bin/clang++ -v -m64 -O3 -std=c++11 -O3 -DNDEBUG -stdlib=libc++ -m64 -stdlib=libc++ CMakeFiles/iqstat.dir/src/iqstat.cpp.o -o iqstat -L/usr/gcc/6/lib/amd64 -lc++abi -lirods_client -lirods_plugin_dependencies -lirods_common /usr/lib/amd64/libavrocpp.so /usr/lib/amd64/libboost_filesystem.so /usr/lib/amd64/libboost_program_options.so /usr/lib/amd64/libboost_system.so /usr/lib/amd64/libjansson.so /usr/zeromq-4.2/lib/amd64/libzmq.so > clang version 4.0.1 (tags/RELEASE_401/final) > Target: x86_64-pc-solaris2.11 > Thread model: posix > InstalledDir: /usr/bin > "/usr/bin/ld" -C -e _start -Bdynamic --dynamic-linker /usr/lib/amd64/ld.so.1 -o iqstat /usr/lib/amd64/crt1.o /usr/lib/amd64/crti.o /usr/lib/amd64/values-Xa.o /usr/gcc/6/lib/gcc/i386-pc-solaris2.11/6.4.0/amd64/crtbegin.o -L/usr/bin -L/usr/clang/4.0/bin -L/usr/clang/4.0/bin/../lib -L/usr/gcc/6/lib/gcc/i386-pc-solaris2.11/6.4.0/amd64 -L/usr/lib/amd64/ -L/usr/gcc/6/lib/amd64 CMakeFiles/iqstat.dir/src/iqstat.cpp.o -lc++abi -lirods_client -lirods_plugin_dependencies -lirods_common /usr/lib/amd64/libavrocpp.so /usr/lib/amd64/libboost_filesystem.so /usr/lib/amd64/libboost_program_options.so /usr/lib/amd64/libboost_system.so /usr/lib/amd64/libjansson.so /usr/zeromq-4.2/lib/amd64/libzmq.so -lc++ -lgcc_s -lc -lgcc -lm /usr/gcc/6/lib/gcc/i386-pc-solaris2.11/6.4.0/amd64/crtend.o /usr/lib/amd64/crtn.o > ld: fatal: file /usr/lib/amd64//libstdc++.so.6: version 'GLIBCXX_3.4.21' does not exist: > required by file /usr/lib/amd64//libirods_client.so > ld: fatal: file /usr/lib/amd64//libstdc++.so.6: version 'GLIBCXX_3.4.21' does not exist: > required by file /usr/lib/amd64/libavrocpp.so > ld: fatal: file /usr/lib/amd64//libstdc++.so.6: version 'CXXABI_1.3.9' does not exist: > required by file /usr/lib/amd64/libavrocpp.so > ld: fatal: file /usr/lib/amd64//libstdc++.so.6: version 'GLIBCXX_3.4.21' does not exist: > required by file /usr/zeromq-4.2/lib/amd64/libzmq.so > ld: fatal: file /usr/lib/amd64//libstdc++.so.6: version 'GLIBCXX_3.4.21' does not exist: > required by file /usr/lib/amd64//libboost_iostreams.so.1.64.0 > ld: fatal: file processing errors. No output written to iqstat > > The fix is simple: in the argument list have to removed -L/usr/lib/amd64 or it has to put on the end of the -L's list. > But how can I tell it this clang++/cmake > -- > Carsten > the reason was missing -shared option, which results in: -Bdynamic --dynamic-linker intead of -Bdynamic -shared which makes the linking trouble see also: clang-40/llvm-4.0.1.src/tools/clang/lib/Driver/tools.cpp: solaris::Linker::ConstructJob <signatureafterquotedtext>-- Carsten </signatureafterquotedtext> -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://openindiana.org/pipermail/oi-dev/attachments/20180802/badf8c12/attachment.html>