【发布时间】:2011-03-22 02:10:17
【问题描述】:
我正在使用 CMake 在 linux 上构建程序。程序编译成功并从项目构建目录运行。该程序与目录${HOME}/build/lib中的自定义库链接
我有一个安装阶段:
install(TARGETS ProgName RUNTIME DESTINATION bin)
当我运行 make install 时,程序会被放到正确的位置,但 cmake 安装程序会从二进制文件中删除运行时路径。
-- Install configuration: "Debug"
-- Installing: *binary name*
-- Removed runtime path from "*binary name*"
我已阅读 Internet 上讨论滥用 LD_LIBRARY_PATH 变量的文章,因此我希望尽可能将我的限制在系统库位置。我不是系统管理员,所以我也无法将该位置添加到默认链接器搜索路径。
有谁知道在安装或至少自定义添加到运行时的路径时如何保持开发时链接路径?
干杯
【问题讨论】:
-
您还应该确保 CMake 使用与
-Wl,--enable-new-dtags等效的ld。这样可以确保您获得RUNPATH,而不是RPATH。RUNPATH可以被LD_LIBRARY_PATH覆盖,而RPATH不能。make check在安装之前在构建目录中就地运行时通常很重要。
标签: linux runtime linker cmake