如何为AWS ARM机器执行cargo build构建?
在AWS ARM机器上执行cargo build时的链接器错误解决方法
遇到的错误信息:
= note: clang: warning: argument unused during compilation: '-pie' [-Wunused-command-line-argument] ld: unknown options: --as-needed -Bstatic -Bdynamic --eh-frame-hdr -z --gc-sections -z -z clang: error: linker command failed with exit code 1 (use -v to see invocation)
问题原因
该错误是因为当前使用的ld链接器不支持GNU ld特有的命令行参数,AWS ARM实例默认可能搭载非GNU系列链接器(如lld),或者链接器配置未指向GNU版本。
解决方法
强制使用GNU链接器
在执行cargo build前通过环境变量指定GNU链接器(ld.gold或ld.bfd):# 使用ld.gold RUSTFLAGS="-C linker=ld.gold" cargo build # 或使用ld.bfd RUSTFLAGS="-C linker=ld.bfd" cargo build安装GNU链接器
如果系统未安装GNU binutils包,执行对应系统的安装命令:- Amazon Linux/CentOS:
sudo yum install binutils - Ubuntu/Debian:
sudo apt install binutils
- Amazon Linux/CentOS:
确认目标架构配置
确保Rust已安装对应AWS ARM的目标架构(aarch64-unknown-linux-gnu):# 检查目标是否已安装 rustup target list | grep aarch64-unknown-linux-gnu # 未安装则执行 rustup target add aarch64-unknown-linux-gnu
内容的提问来源于stack exchange,提问作者0__
相关产品推荐
相关产品推荐

