【发布时间】:2015-12-02 12:33:06
【问题描述】:
我没有将-Wl,-rpath=$HOME/local/gcc52/lib64 分配给我从源代码构建的每次调用GCC 5.2,而是以这种方式修改了它的spec 文件:
*link_command:
%{!fsyntax-only:%{!c:%{!M:%{!MM:%{!E:%{!S: %(linker) -rpath=%:getenv(HOME /local/gcc52/lib64) ...
但这取决于我在$HOME/local/gcc52 下的具体安装。有没有更好的方法来引用被调用的GCC本身的安装路径?
这个手册页对我帮助不大:
【问题讨论】:
-
有时需要
-L和-Wl,-rpath。所以我想更广泛的问题是:在本地安装编译器之后,我们如何让所有东西在这台机器上“正常工作”,忽略系统库/头文件? -
您是否尝试过使用规格文件?
-
stackoverflow.com/a/17224826 提供了一种在安装 GCC 后创建具有正确路径的规范文件的解决方案。如果您稍后移动 GCC 安装,则需要重新创建规范文件。
-
@JonathanWakely 感谢您提供信息,但这对我来说实际上是个坏消息,因为我和那个人都独立得出结论,每次安装都必须调整规范文件(尽管这不会消除找到便携式解决方案的可能性。)
-
@nodakai 在编译 GCC 时,可以指定
--with-specs到configure。您已经需要指定--prefix,所以这应该不会再困难了。与此无关,我很好奇你的规范字符串:你为什么要修改link_command而不仅仅是link?我还没有对它进行彻底的测试,但是到目前为止我已经做了少量的测试,看起来只要添加行*link: + %{!static:-rpath PREFIX/lib64 -enable-new-dtags},其中PREFIX 是你传递给--prefix的任何东西,就可以完成这项工作。跨度>