M1芯片Mac编译D程序遭遇链接错误求助
在M1 macOS Sonoma上解决DMD 2.106编译链接错误
核心问题分析
你遇到的链接错误根源是架构不匹配:系统默认以arm64目标编译,但你安装的DMD及配套libphobos2库是x86_64架构;手动指定x86_64后报错,大概率是旧编译产物残留或链接参数传递不全导致。
解决方案1:强制x86_64架构编译链接
- 清理旧编译产物,避免残留损坏的目标文件:
rm -f app.o app - 用DMD直接指定架构编译,自动传递正确的链接器参数:
或显式传递链接器架构参数:dmd app.d -arch x86_64dmd app.d -m64 -L-arch -Lx86_64
解决方案2:安装arm64原生DMD(推荐)
如果希望获得原生arm64性能,可替换为适配M1的DMD版本:
- 卸载现有x86_64版本:
sudo rm -rf /Library/D/dmd sudo rm -f /usr/local/bin/dmd /usr/local/bin/dub /usr/local/bin/rdmd - 下载适配macOS arm64架构的DMD安装包完成安装。
- 重新编译程序,无需额外参数:
dmd app.d
额外排查验证步骤
- 检查当前DMD的架构:
输出若含file /Library/D/dmd/bin/dmdx86_64则为x86_64版本,含arm64则为原生版本。 - 验证编译生成的目标文件架构:
确认架构与你指定的编译目标一致。dmd app.d -c file app.o
内容的提问来源于stack exchange,提问作者Peter Chapin
相关产品推荐
相关产品推荐

