Apple M1无法交叉编译Rust ring crate到x86_64-unknown-linux-gnu求助
解决Apple M1上交叉编译Rust Lambda(ring依赖报错)的方向
核心问题是ring的构建脚本在调用x86_64-linux-gnu-gcc,但你实际安装的编译器是x86_64-unknown-linux-gnu-gcc,导致系统找不到可执行文件。以下是具体解决方法:
方法1:创建编译器软链接
在终端执行命令,给你的编译器创建别名软链接,匹配ring脚本期望的文件名:
# 给gcc创建软链接 ln -s /opt/homebrew/Cellar/x86_64-unknown-linux-gnu/7.2.0/bin/x86_64-unknown-linux-gnu-gcc /opt/homebrew/bin/x86_64-linux-gnu-gcc # 给g++创建软链接(避免后续C++编译报错) ln -s /opt/homebrew/Cellar/x86_64-unknown-linux-gnu/7.2.0/bin/x86_64-unknown-linux-gnu-g++ /opt/homebrew/bin/x86_64-linux-gnu-g++
确保/opt/homebrew/bin在你的系统PATH中,之后重新执行编译命令即可。
方法2:修改Cargo配置文件
更新项目目录下的.cargo/config.toml,直接指定目标平台的CC/CXX编译器路径,覆盖ring构建脚本的默认查找逻辑:
[target.x86_64-unknown-linux-gnu] linker = "/opt/homebrew/Cellar/x86_64-unknown-linux-gnu/7.2.0/bin/x86_64-unknown-linux-gnu-gcc" cc = "/opt/homebrew/Cellar/x86_64-unknown-linux-gnu/7.2.0/bin/x86_64-unknown-linux-gnu-gcc" cxx = "/opt/homebrew/Cellar/x86_64-unknown-linux-gnu/7.2.0/bin/x86_64-unknown-linux-gnu-g++"
方法3:临时设置环境变量
在执行编译命令前,直接指定对应目标平台的编译器环境变量:
export CC_x86_64_unknown_linux_gnu=/opt/homebrew/Cellar/x86_64-unknown-linux-gnu/7.2.0/bin/x86_64-unknown-linux-gnu-gcc export CXX_x86_64_unknown_linux_gnu=/opt/homebrew/Cellar/x86_64-unknown-linux-gnu/7.2.0/bin/x86_64-unknown-linux-gnu-g++ cargo build --target x86_64-unknown-linux-gnu
额外建议
你使用的ring版本是0.16.20,属于较旧版本,这类交叉编译的路径问题在新版本中已被修复。如果项目依赖允许,尝试升级ring到最新稳定版,能避免不少兼容性问题。
内容的提问来源于stack exchange,提问作者Seto
相关产品推荐
相关产品推荐

