首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从Makefile中的c可执行文件中删除硬编码的rpath

从Makefile中的c可执行文件中删除硬编码的rpath
EN

Stack Overflow用户
提问于 2015-10-09 13:45:37
回答 2查看 1.5K关注 0票数 0

我的c++应用程序有一个可执行文件和多个本地共享库。当我构建可执行文件时,链接器(LD)将可执行的RPATH设置为编译环境中本地共享库的路径。

问题是,当我构建应用程序的RPM并在其他系统上安装RPM时,应用程序可执行文件在编译环境中的目录中查找本地共享库。

我希望我的可执行文件在RPM安装它们的路径上查找本地共享库,而不是在编译时它们存在的路径上。

我知道,一旦我使用实用程序chrpath安装了RPM,就可以更改可执行文件的RPATH。但我想让它自动化。通过Makefile中的LD标志或从RPM规范文件执行CHRPATH的首选方法是什么。或者还有其他更好的方法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-09 14:09:50

rpath是一个链接器标志,可能是在LDFLAGS中设置的。要删除它,只需编辑Makefile中的链接器标志。或者,如果它们以模棱两可的方式传递到您的构建环境中(在调用make之前设置它们,并且您不确定它们在哪里),则可以简单地覆盖它们:

代码语言:javascript
运行
复制
LDFLAGS = -your_linker_flags 

希望这能有所帮助

票数 0
EN

Stack Overflow用户

发布于 2015-10-10 08:50:46

为什么rpath是坏的:rpath

如何删除它:rpath

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

https://stackoverflow.com/questions/33039918

复制
相关文章

相似问题

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