M2 MacBook Pro(OS 14.1)编译Ada程序遇GNAT链接错误求助
解决方案:M2 MacBook Pro上Ada编译ld断言错误问题
核心问题
在OS 14.1系统的M2 MacBook Pro上,使用alr build编译Ada程序时触发链接器断言错误:
ld: Assertion failed: (resultIndex < sectData.atoms.size()), function findAtom, file Relocations.cpp, line 1336.
可行解决方法
1. 回退Xcode命令行工具版本
最新版Xcode命令行工具的ld64链接器存在兼容性问题,可回退到稳定版本(如14.3.1或15.0):
- 卸载当前工具:
xcode-select --uninstall - 从Apple开发者平台下载对应版本的Command Line Tools并安装
- 验证版本:
clang --version
2. 切换兼容的GNAT工具链版本
当前使用的GNAT 13.2.1与新版链接器适配不佳,切换到12.x版本:
- 选择指定工具链:
alr toolchain --select gnat_native=12.2.1 - 清理并重新编译:
alr clean && alr build
3. 强制使用旧版链接器
在项目的.gpr配置文件中添加链接器参数,强制调用ld_classic:
package Linker is for Default_Switches ("Ada") use ("-Wl,-ld_classic"); end Linker;
修改后重新执行alr build。
4. 重置Alire环境排除缓存问题
清除Alire缓存并重新初始化项目,排除依赖损坏问题:
alr clean --all alr update alr init --bin mytestproj cd mytestproj alr build
内容的提问来源于stack exchange,提问作者user17931281
相关产品推荐
相关产品推荐

