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

时间:2015-10-09 13:45:38

标签: c++ linux makefile rpm

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

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

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

我知道在使用实用程序chrpath安装RPM后,我可以更改可执行文件的RPATH。 但我想自动化它。 什么是首选方法。是通过Makefile中的LD标志,还是从RPM spec文件中执行CHRPATH。还是有其他更好的方式。

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

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

LDFLAGS = -your_linker_flags 

希望这有帮助