x86-64交叉编译带cxx的Rust项目到armv7缺库报错如何解决
交叉编译Rust armv7架构(树莓派3B+)缺失依赖修复方案
需要补充拷贝的文件
- 从运行正常的Raspbian系统中,完整拷贝
/lib/arm-linux-gnueabihf目录到本机的/usr/arm-none-linux-gnueabihf/lib路径,拷贝时保留所有软链接结构,不要将软链接替换为实体文件 - 拷贝Raspbian系统中
/usr/include/arm-linux-gnueabihf目录到本机的/usr/arm-none-linux-gnueabihf/include路径,覆盖冲突文件 - 将你当前存放在
/usr/arm-linux-gnueabihf/路径下的libc_nonshared.a移动到/usr/arm-none-linux-gnueabihf/lib目录下
编译前必要配置
- 在Rust项目根目录创建
.cargo/config.toml文件,写入以下配置:
[target.armv7-unknown-linux-gnueabihf] linker = "arm-none-linux-gnueabihf-gcc" rustflags = [ "-C", "link-arg=--sysroot=/usr/arm-none-linux-gnueabihf", "-C", "link-arg=-L/usr/arm-none-linux-gnueabihf/lib/arm-linux-gnueabihf", ]
- 执行编译命令前先导出环境变量:
export CXXFLAGS="--sysroot=/usr/arm-none-linux-gnueabihf -I/usr/arm-none-linux-gnueabihf/include" export CC="arm-none-linux-gnueabihf-gcc" export CXX="arm-none-linux-gnueabihf-g++"
执行编译
运行以下命令即可完成编译:
cargo build --target armv7-unknown-linux-gnueabihf
内容的提问来源于stack exchange,提问作者adamski234
相关产品推荐
相关产品推荐

