MacOS下ld执行链接脚本提示unknown option: -T如何解决
macOS下ld不支持-T参数的解决方案
报错原因
macOS 原生自带的 ld 为苹果自研的 ld64 链接器,和 GNU ld 的设计逻辑与支持参数存在差异,本身不支持 -T 参数指定自定义链接脚本,这是触发报错的根本原因。
可行解决方案
方案1(推荐):使用对应架构的GNU交叉编译工具链
做裸机、内核类开发时,统一使用GNU工具链可避免大量平台兼容问题,操作步骤如下:
- 若未安装Homebrew,先完成Homebrew部署,随后执行安装指令:
若目标架构不是x86_64,可替换为对应架构的工具链包,例如ARM64架构对应brew install x86_64-elf-binutils x86_64-elf-gccaarch64-elf-binutils。 - 链接时使用工具链自带的GNU ld替代原生ld,原指令修改为:
完全兼容你原本针对GNU ld写的链接脚本与参数逻辑,无需额外修改。x86_64-elf-ld -Tlink.ld -o kernel.bin start.o main.o scrn.o
方案2:使用ld64等效参数(兼容性有限)
ld64提供了指定链接脚本的等效参数-threaded_script,可将原指令修改为:
ld -threaded_script link.ld -o kernel.bin start.o main.o scrn.o
注意:ld64的链接脚本语法和GNU ld不完全兼容,若你的链接脚本是针对GNU ld编写,大概率会触发后续语法错误,仅建议简单链接场景尝试。
内容的提问来源于stack exchange,提问作者jdir.s
相关产品推荐
相关产品推荐

