Linux 动态库查找路径配置

1. RPATH 机制

RPATH(Run-time search path) 可以硬编码到可执行文件中,告诉程序在运行时优先去哪里寻找动态库。

2. 设置 RPATH

CMakeLists.txt 设置 RPATH,告诉程序运行时优先在当前目录 $ORIGIN 及其 libs 子目录查找动态库:

1
2
3
4
set_target_properties(${PROJECT_NAME} PROPERTIES
BUILD_RPATH "$ORIGIN;$ORIGIN/libs"
INSTALL_RPATH "$ORIGIN;$ORIGIN/libs"
)

${PROJECT_NAME} 为项目名称

3. 设置自动拷贝

如果你希望每次编译后,CMake 自动把库文件拷贝到执行目录下,可以添加如下命令:

1
2
3
4
5
6
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD 
COMMAND ${CMAKE_COMMAND} -E copy_directory
${CMAKE_SOURCE_DIR}/libs
${CMAKE_CURRENT_BINARY_DIR}/libs
COMMENT "Copying dynamic libraries to output directory..."
)

Linux 动态库查找路径配置
https://flowerdown.org/posts/20260513-212331
作者
Unrealfeathers
发布于
2026年5月13日
许可协议