Mac Silicon环境下Alire运行失败:LC_RPATH重复问题咨询
解决Mac Silicon上Alire GTKAda项目运行时dyld重复LC_RPATH错误
问题背景
基于GTKAda的Alire项目编译构建正常,但执行alr run时触发dyld错误,提示重复的LC_RPATH条目:
Building hello_gtk=0.1.0-dev/hello_gtk.gpr... gprbuild: "hello_gtk" up to date ✓ Build finished successfully in 2.25 seconds. dyld[22996]: duplicate LC_RPATH '/Users/Roger/.local/share/alire/toolchains/gnat_native_14.2.1_cc5517d6/lib' in /System/Volumes/Data/Ada_Projects/hello_gtk/bin/hello_gtk dyld[22996]: duplicate LC_RPATH '/Users/Roger/.local/share/alire/toolchains/gnat_native_14.2.1_cc5517d6/lib' ------------------ (program exited with code: 1)
解决方案
1. 手动清理二进制文件中的重复RPATH
使用install_name_tool直接修改生成的二进制文件:
- 先查看当前RPATH条目,确认重复项:
otool -l /System/Volumes/Data/Ada_Projects/hello_gtk/bin/hello_gtk | grep -A2 LC_RPATH - 删除重复的路径条目:
install_name_tool -delete_rpath '/Users/Roger/.local/share/alire/toolchains/gnat_native_14.2.1_cc5517d6/lib' /System/Volumes/Data/Ada_Projects/hello_gtk/bin/hello_gtk - 完成后直接运行
alr run测试。
2. 修改项目GPR文件避免重复添加RPATH
打开项目的hello_gtk.gpr文件,检查链接器配置部分:
- 查找类似
package Linker is for Default_Switches ("Ada") use (...);的配置,确认是否重复添加了目标RPATH。 - 如果发现重复的
-Wl,-rpath,/Users/Roger/...条目,删除多余的重复项,保存后重新构建:alr clean && alr build
3. 重置Alire工具链
可能是工具链配置异常导致重复注入路径:
- 卸载当前有问题的工具链:
alr toolchain uninstall gnat_native_14.2.1_cc5517d6 - 重新安装对应版本的工具链:
alr toolchain install gnat_native=14.2.1 - 重新构建项目后运行测试。
内容的提问来源于stack exchange,提问作者Roger
相关产品推荐
相关产品推荐

