Working on a just delivered Cray I am again challenged by the way that
CMake adds libraries to the end of the link line that I did not specify.
The Cray requires use of the compiler wrappers. After adding the
appropriate libraries (hdf5, z) to my target, the link line is
/opt/cray/craype/2.4.2/bin/CC -DMPICH_IGNORE_CXX_SEEK -std=c++11 -O3
-DNDEBUG -msse2 CMakeFiles/io.dir/io.cxx.o -o io
-L/opt/cray/hdf5-parallel/1.8.14/INTEL/14.0/lib ../libtxio.a
../../txstreams/libtxstreams.a
/opt/cray/hdf5-parallel/1.8.14/INTEL/14.0/lib/libhdf5.a -Wl,-Bstatic -lz
-Wl,-Bdynamic /opt/cray/hdf5-parallel/1.8.14/INTEL/14.0/lib/libhdf5.a
-Wl,-Bstatic -lz -Wl,-Bdynamic
-Wl,-rpath,/opt/cray/hdf5-parallel/1.8.14/INTEL/14.0/lib
and the link fails with
ld: dynamic STT_GNU_IFUNC symbol `strcmp' with pointer equality in
`/usr/lib/../lib64/libc.a(strcmp.o)' can not be used when making an
executable; recompile with -fPIE and relink with -pie
Now I believe that Cray has the appropriate libraries in its compiler
wrapper, because
if I just link without all the additions:
/opt/cray/craype/2.4.2/bin/CC -DMPICH_IGNORE_CXX_SEEK -std=c++11 -O3
-DNDEBUG -msse2 CMakeFiles/io.dir/io.cxx.o -o io
-L/opt/cray/hdf5-parallel/1.8.14/INTEL/14.0/lib ../libtxio.a
../../txstreams/libtxstreams.a
/opt/cray/hdf5-parallel/1.8.14/INTEL/14.0/lib/libhdf5.a -lz
it all just works.
Is there a way to tell cmake not to append
"-Wl,-Bdynamic /opt/cray/hdf5-parallel/1.8.14/INTEL/14.0/lib/libhdf5.a
-Wl,-Bstatic -lz -Wl,-Bdynamic
-Wl,-rpath,/opt/cray/hdf5-parallel/1.8.14/INTEL/14.0/lib"
to the link line and not to insert -Wl,-Bstatic in front of -lz
?
Thx....John Cary
--
Powered by www.kitware.com
Please keep messages on-topic and check the CMake FAQ at:
http://www.cmake.org/Wiki/CMake_FAQ
Kitware offers various services to support the CMake community. For more
information on each offering, please visit:
CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake