You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Solaris 10上替换GCC 9.2默认链接器为Binutils 2.23 ld的问题

解决Solaris 10下GCC 9.2替换默认链接器的问题

为什么自定义specs文件的方案未生效

你的GCC编译时配置了--without-gnu-ld和--with-ld=/usr/ccs/bin/ld,这会让GCC的链接前端collect2硬编码使用编译时指定的ld路径。仅修改*md_exec_prefix无法覆盖这个硬编码配置,因此仍会调用旧版ld。

可行的替代方法

方法1:编译时用-B参数指定工具路径

-B参数会让GCC优先从指定目录查找汇编器、链接器等辅助工具,直接覆盖默认路径:

gcc -v simple.o -o simple -B/home/chip/binutils223/bin/

执行后查看-v输出的链接步骤,确认是否调用了/home/chip/binutils223/bin/ld。

方法2:调整环境变量PATH

将目标ld的路径放到PATH最前端,让GCC优先找到新版ld:

export PATH=/home/chip/binutils223/bin:$PATH
gcc -v simple.o -o simple

注意:此方法会影响所有依赖PATH查找工具的命令,若仅需针对GCC修改,方法1更精准。

方法3:修改specs文件的正确配置

若坚持使用specs文件,需直接修改*linker段,强制指定新版ld的路径,而非仅修改md_exec_prefix。修改后的myspecs.txt内容如下:

*linker:
collect2 --ld-path=/home/chip/binutils223/bin/ld

或者直接替换为新版ld的完整路径:

*linker:
/home/chip/binutils223/bin/ld

然后执行编译命令:

gcc -v simple.o -o simple -specs=myspecs.txt

内容的提问来源于stack exchange,提问作者raffian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 17:40:15