如何更改 crti.o 的 GCC 默认搜索目录?
How do I change GCC's default search directory for crti.o?
我想为 startfile
和
endfile
:crt1.o
、crti.o
和 crtn.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
文件修改为 link 针对新版本 glibc
,但它仍然 link 针对 /usr
中的旧系统版本 startfile
和 endfile
.
这是一个 the unanswered question on the gcc-help
mailing list. Here's a related Linuxbrew bug, gfortran is broken with stand alone Linuxbrew, and a proposed fix, gcc, binutils: link to Cellar instead of system libs。
谢谢,
肖恩
根据https://wiki.debian.org/Multiarch/LibraryPathOverview,gcc会在$(sysroot)/lib
中寻找crt1.o
等启动文件,所以你可以在运行时指定--sysroot
选项gcc,或者用 --with-sysroot
.
编译 gcc
您可以在规范文件的 *startfile:
和 *endfile:
部分使用绝对路径,而不是默认的相对路径。这将覆盖 GCC 对默认位置的选择。
我想为 startfile
和
endfile
:crt1.o
、crti.o
和 crtn.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
文件修改为 link 针对新版本 glibc
,但它仍然 link 针对 /usr
中的旧系统版本 startfile
和 endfile
.
这是一个 the unanswered question on the gcc-help
mailing list. Here's a related Linuxbrew bug, gfortran is broken with stand alone Linuxbrew, and a proposed fix, gcc, binutils: link to Cellar instead of system libs。
谢谢,
肖恩
根据https://wiki.debian.org/Multiarch/LibraryPathOverview,gcc会在$(sysroot)/lib
中寻找crt1.o
等启动文件,所以你可以在运行时指定--sysroot
选项gcc,或者用 --with-sysroot
.
您可以在规范文件的 *startfile:
和 *endfile:
部分使用绝对路径,而不是默认的相对路径。这将覆盖 GCC 对默认位置的选择。