首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何强制已安装gcc-ar使用特定的二进制版本?

如何强制已安装gcc-ar使用特定的二进制版本?
EN

Stack Overflow用户
提问于 2016-03-03 18:17:50
回答 2查看 1.4K关注 0票数 0

我从源代码中构建了GCC 4.9.3,并安装在我的主目录中,带有一些前缀,例如gcc4.9

现在,我想使用一个更新版本的binutils连同GCC 4.9.3。我构建了它们,并分别安装在我的主目录中,前缀为binutils2.26

我如何迫使gcc-argcc4.9使用arbinutils2.26而不是system?它总是调用/usr/bin/ar,似乎没有任何选项可供指定。以某种方式替换/usr/bin/ar不是一种选择--我在这台机器上没有根访问权限。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-22 16:40:30

我设法解决了这个问题。

使用strace,我发现gcc-ar在几个目录中查找ar,包括<gcc install dir>/libexec/gcc/x86_64-redhat-linux/4.9.3

因此,显而易见的解决方案是在这个目录中创建指向相应的binutils2.26可执行文件的链接:

代码语言:javascript
复制
  cd "<gcc install dir>/libexec/gcc/x86_64-redhat-linux/4.9.3"
  for file in ~/binutils2.26/bin/* ; do ln -s "${file}" ; done

毕竟,~/binutils2.26/bin中的可执行文件将被复制为GCC 4.9.3目录中的链接,并将在GCC版本构建时自动使用。

票数 1
EN

Stack Overflow用户

发布于 2016-03-06 05:35:24

使用GCC的-B标志,并将其指向包含要执行的ar的目录。有关此标志的详细信息,请参阅GCC手册

代码语言:javascript
复制
gcc-ar -B/path/to/your/dir ...

它似乎适用于我:

代码语言:javascript
复制
$ strace -f -eexecve gcc-ar rc foo.a /dev/null |& grep /ar
[pid 14485] execve("/usr/lib/gcc/x86_64-pc-linux-gnu/5.3.0/../../../../x86_64-pc-linux-gnu/bin/ar", [...]) = 0
$ strace -f -eexecve gcc-ar rc foo.a /dev/null -B/usr/bin |& grep /ar
[pid 14493] execve("/usr/bin/ar", [...]) = 0
$ strace -f -eexecve gcc-ar rc foo.a /dev/null -B/usr/x86_64-pc-linux-gnu/binutils-bin/2.26/ |& grep /ar
[pid 14500] execve("/usr/x86_64-pc-linux-gnu/binutils-bin/2.26/ar", [...]) = 0
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35779916

复制
相关文章

相似问题

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