如何更改GCC的crti.o默认搜索目录?

时间:2015-03-06 18:06:08

标签: gcc glibc search-path

我想为startfile指定GCC的搜索目录 endfilecrt1.ocrti.ocrtn.o。在命令行上传递-B GCC驱动程序工作,但不方便。如何修改规格 文件(lib/gcc/x86_64-unknown-linux-gnu/4.9.2/specs)指定startfile的搜索路径?

我尝试将-B选项添加到startfile规范并收到错误消息: ld: unrecognized option '-B/gsc/btl/linuxbrew/lib'

然后我尝试将-B选项添加到cc1规范并得到错误: cc1: error: command line option '-B/gsc/btl/linuxbrew/lib' is valid for the driver but not for C

如果无法通过specs文件执行此操作,是否有环境变量或GCC的配置选项可以实现相同的目标?

我已在我的主目录中安装了最新版本的glibc。一切都很好。我已修改specs文件以链接新版glibc,但它仍然链接/usr startfile中的旧系统版本}和endfile

这是gcc-help邮件列表中的the unanswered question。这是一个相关的Linuxbrew错误gfortran is broken with stand alone Linuxbrew,以及一个建议的修补程序,gcc, binutils: link to Cellar instead of system libs

谢谢,
肖恩

2 个答案:

答案 0 :(得分:1)

根据https://wiki.debian.org/Multiarch/LibraryPathOverview,gcc将在crt1.o中查找诸如$(sysroot)/lib之类的启动文件,因此您可以在运行gcc时指定--sysroot选项,或使用以下命令编译gcc --with-sysroot

答案 1 :(得分:1)

您可以在specs文件的*startfile:*endfile:部分中使用绝对路径,而不是默认的相对路径。这将覆盖GCC选择的默认位置。