使用Scons编译RosettaCommons时出现ld未知-rpath选项报错如何解决
报错原因
本次报错的核心是macOS平台的clang链接器(ld64)与SCons生成的编译参数不匹配:
- macOS自带的ld链接器不支持
-rpath=路径的参数格式,仅支持-rpath,路径的写法 - 你使用的SCons 4.2.0版本对macOS的rpath生成逻辑做了不兼容调整,而2021版RosettaCommons的构建脚本默认适配的是3.x版本的SCons,因此自动生成了错误格式的rpath参数,导致链接阶段报错。
修复方案
方案一:降级SCons版本(操作最简单,推荐优先使用)
Rosetta 2021.16版本官方适配的SCons版本为3.x系列,降级到对应版本即可直接解决参数不兼容问题:
- 卸载当前高版本SCons:
pip uninstall scons - 安装适配版本:
pip install scons==3.1.2 - 重新执行原有编译命令即可:
scons bin mode=release
方案二:修改Rosetta构建配置(不需要降级SCons)
如果不想更换SCons版本,可以手动调整构建脚本的参数生成逻辑:
- 进入Rosetta解压目录,找到
main/source/SConstruct文件打开 - 搜索文件中所有
RPATH、rpath相关的配置项,将生成-Wl,-rpath=的逻辑替换为-Wl,-rpath,(仅将等号替换为逗号即可) - 保存文件后重新执行编译命令即可。
额外注意事项
你使用的是macOS 12 Beta版本,若后续仍出现SDK相关的兼容性报错,可以在编译命令后追加参数指定兼容版本:scons bin mode=release cxxflags="-mmacosx-version-min=10.15"
内容的提问来源于stack exchange,提问作者Shengyuan Wang
相关产品推荐
相关产品推荐

