最近项目写得差不多了,之前用交叉编译工具cross,还挺好用的,但最近发现一个问题,cross无法识别本地lib,path是错的,导致报错:找不到/tools/cargo.toml. 其实正确的路径是在用户目录下,怎么交叉编译的时候变成在/下面了.
再尝试解决后无果,干脆不用cross了,自己去下载相关工具链进行交叉编译,步骤如下:
1:下载linux交叉编译工具链:x86_64-linux-musl-cross
2:配好环境变量,执行x86_64-linux-musl-gcc -v命令可以打印出版本号
3:执行rustup命令添加linux-musl的target
4:配置项目的cargo.toml,在里面加入交叉编译目标,如下:
[target.x86_64-unknown-linux-musl]
linker = "x86_64-linux-musl-gcc"
5:执行cargo build --release --target x86_64-unknown-linux-musl
然后就报错了,错误信息:
error: linking with cc
failed: exit code: 1
note: "cc" "-Wl,--as-needed" "-Wl,-z,noexecstack" "-Wl,--eh-frame-hdr" "-m64" "-nostdlib" "/Users/tangjian/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-unknown-linux-musl/lib/crt1.o" "/Users/tangjian/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-unknown-linux-musl/lib/crti.o" "-L" "/Users/tangjian/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-unknown-linux-musl/lib" "/Users/tangjian/git/MyRust/net_test/target/x86_64-unknown-linux-musl/release/deps/net_test-8d10b2b9f09fee1c.net_test.b1aycne3-cgu.0.rcgu.o" "/Users/tangjian/git/MyRust/net_test/target/x86_64-unknown-linux-musl/release/deps/net_test-8d10b2b9f09fee1c.net_test.b1aycne3-cgu.1.rcgu.o" "/Users/tangjian/git/MyRust/net_test/target/x86_64-unknown-linux-musl/release/deps/net_test-8d10b2b9f09fee1c.net_test.b1aycne3-cgu.10.rcgu.o"
其实还有很多,只截取了一段错误信息,因为很多感觉重复的。
请问哪儿出问题了,怎么修复呢?
谢谢
评论区
写评论厚颜 向楼主求一份具体的交叉编译配置步骤教程
哈哈 用mac的还没想到这个问题 谢谢楼主
已经找到问题并解决了,在此分享一下工具链网址,方便以后有小伙伴交叉编译也许用得上 https://musl.cc