Rust交叉编译初学
文章目录
今天写了个TCP监控程序,想试试能不能交叉编译到其他平台。比如我的安卓手机(arrch64/arm架构)。
按照官网给的编译教程,先安装编译的工具:
|
|
然后使用命令检查编译构建arrch64
平台应用:
|
|
果不其然,报错了。
|
|
查阅资料发现需要在~/.cargo/config
中加入
|
|
此外还得安装aarch64-linux-gnu-gcc
,我使用pacman
很轻松的安装上了。之后成功编译。我迫不及待的将程序发送到我的手机上,在termux
中运行。然而运行不了。提示“No such file or directory”,当然程序是存在的且有运行权限。经验告诉我,这应该是程序平台架构不符。我使用file
命令查看文件,得到的信息:
|
|
但的确显示的是arrch64,64bit。于是我把代码发到termux
中构建,得到能运行的程序文件。同样使用file
命令查看:
|
|
发现两者的不同点在interpreter
,于是我发现手机中存在/system/bin/linker64
但不存在/lib/ld-linux-aarch64.so.1
,这是不能运行的原因。
最后尝试了其他选择的交叉编译,都报错了。知道问题所在,但不知道问题的解决方法。
文章作者 sparrowyang
上次更新 2022-05-23