[CMake] Toolchain rpath libraries

Roman Savchenko gmstima at gmail.com
Fri Sep 9 03:27:55 EDT 2016


Dear all,

I created toolchain file:

set(CMAKE_SYSTEM_NAME Linux)

set(CMAKE_SYSROOT "/srv/chroots/centos6-amd64")

set(CMAKE_C_FLAGS   "-gcc-name=${CMAKE_SYSROOT}/usr/bin/gcc
-L${CMAKE_SYSROOT}/usr/lib64")
set(CMAKE_CXX_FLAGS "-gxx-name=${CMAKE_SYSROOT}/usr/bin/g++
-L${CMAKE_SYSROOT}/usr/lib64")

set(CMAKE_C_COMPILER   ${CMAKE_SYSROOT}/opt/intel/bin/icc  CACHE STRING "cc")
set(CMAKE_CXX_COMPILER ${CMAKE_SYSROOT}/opt/intel/bin/icpc CACHE STRING "cxx")
set(CMAKE_LINKER       ${CMAKE_SYSROOT}/usr/bin/ld        CACHE STRING "ld")
set(CMAKE_AR            ${CMAKE_SYSROOT}/usr/bin/ar        CACHE STRING "ar")
set(CMAKE_NM            ${CMAKE_SYSROOT}/usr/bin/nm         CACHE STRING "nm" )
set(CMAKE_OBJCOPY      ${CMAKE_SYSROOT}/usr/bin/objcopy    CACHE
STRING "objcopy")
set(CMAKE_OBJDUMP      ${CMAKE_SYSROOT}/usr/bin/objdump    CACHE
STRING "objdump")
set(CMAKE_RANLIB       ${CMAKE_SYSROOT}/usr/bin/ranlib     CACHE
STRING "ranlib")
set(CMAKE_STRIP        ${CMAKE_SYSROOT}/usr/bin/strip      CACHE STRING "strip")

set(CMAKE_SKIP_RPATH TRUE)

set(CMAKE_FIND_ROOT_PATH "${CMAKE_SYSROOT}")
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)

But there is a broblem with compilation - wrong path to libraries:

/usr/bin/cmake -E cmake_link_script CMakeFiles/Test.dir/link.txt --verbose=1
/srv/chroots/centos6-amd64/opt/intel/bin/icpc    -std=c++11 -Wall
-ggdb -O0   CMakeFiles/Test.dir/main.cpp.o
CMakeFiles/TestBed.dir/test.cpp.o  -o Test
-L/srv/chroots/centos6-amd64/usr/lib64 -lrt -lnuma -lzlib
-Wl,-rpath,/usr/lib64

ld: cannot find /lib64/libc.so.6
ld: cannot find /usr/lib64/libc_nonshared.a


This libraries exist under:
${CMAKE_SYSROOT}/lib64

So how can I tell toolchain to look up there?

Many thanls,
R. Savchenko


More information about the CMake mailing list