首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RPATH筹备工作

RPATH筹备工作
EN

Stack Overflow用户
提问于 2016-10-17 06:00:57
回答 1查看 1.9K关注 0票数 5

在Linux上使用CMake构建之后(但在安装之前),所有链接库都会添加到最终可执行文件的RPATH中。

但是,我想把$ORIGIN/../lib:放在这个RPATH的前面。

到目前为止,我只能够替换RPATH,这不是我想要的:我希望ld.so首先在../lib中查看。我现在就是这样做的:

代码语言:javascript
复制
set_target_properties(foo PROPERTIES
  BUILD_WITH_INSTALL_RPATH TRUE
  INSTALL_RPATH "\$ORIGIN/../lib:...")

虽然这是可行的,但它缺少了一些额外的第三方库,这些库不是我构建树的一部分,也没有位于系统目录中。

chrpath -l foo给了我完全相同的上面的INSTALL_RPATH。如果我不设置这些属性,我会得到很长的位置列表,例如RPATH=/bar/baz/:/quux/等(我想添加到其中)。

我试过使用get_property(_existing_rpath foo INSTALL_RPATH),但这给了我一个空字符串

我读过handling的提示,在"CMake Bugs“下面注意到

至少在CMake 2.6.4 RHEL5上,mancmakecommansforINSTALL_RPATH_USE_LINK_PATH假装这个设置会将附加到任何指定的CMAKE_INSTALL_RPATH内容的链接路径。然而,在这个版本上,启用INSTALL_RPATH_USE_LINK_PATH将取代。 嗯,对此已经不太确定了:只是在CMake 2.8.0上验证了这一点,现在在这两个版本中都列出了cmake_install.cmake中的正确更改。此错误可能是由于以前没有执行每个目标安装(),或者是由于CMake RPATH相关变量中的其他一些更改而发生的。

顺便说一句,我只对为构建的文件获得一个工作的RPATH感兴趣,就像在运行安装之前一样。我没有正确地配置安装(添加了安装目标等等)。我需要调查一下这部分才能奏效吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-17 07:37:03

如果你在谷歌上找不到答案,答案往往是显而易见的。这似乎挺好的:

代码语言:javascript
复制
set_target_properties(foo PROPERTIES
  BUILD_WITH_INSTALL_RPATH TRUE
  INSTALL_RPATH_USE_LINK_PATH TRUE
  INSTALL_RPATH "\$ORIGIN/../lib:${INSTALL_RPATH}")

在我的系统(和CMake 3.6.1)中,INSTALL_RPATH似乎以冒号开头,但我不指望它。而且,由于我显然是在这里设置全局INSTALL_RPATH,所以它可能被过度指定(我还没有检查)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40079424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档