cmake 链接到共享库而不使用完整路径

Bor*_*rzh 5 c++ linux linker cmake

我有以下 CMakeLists.txt:

set( PROJECT_LINK_LIBS lib1.so lib2.so )
link_directories( path/to/libs ) # lib1.so and lib2.so are there.

add_library( ${PROJECT_NAME} SHARED ${PROJECT_SOURCES} )
target_link_libraries( ${PROJECT_NAME} ${PROJECT_LINK_LIBS} )
Run Code Online (Sandbox Code Playgroud)

编译和链接都很好。

但是当我这样做时:

ldd -d mylib.so
Run Code Online (Sandbox Code Playgroud)

我得到:

  1. libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf529b000)
  2. linux-gate.so.1 => (0xf777a000)
  3. /lib/ld-linux.so.2 (0xf777b000)
  4. lib1.so => /path/to/libs/lib1.so (0xf56a2000)
  5. lib2.so => /path/to/libs/lib2.so (0xf548f000)

我的问题是:

  • 如何删除 4. 和 5. 的 /path/to/libs/ ?与 LD_LIBRARY_PATH 有关吗?
  • 自动回答:我明白是什么意思 1. 在该路径中搜索 libc.so.6。但是 2. 和 3. 呢?locate linux-gate.so.1什么也没给出。3.为什么没有=>符号?(在这里找到答案)

Bor*_*rzh 4

好的找到了答案:

set( CMAKE_SKIP_BUILD_RPATH true )
Run Code Online (Sandbox Code Playgroud)

就这样做到了。