文章目录
0.env
1.编译环境
1.ubuntu-1804
2.x86_64
2.运行环境
3IPQ807x - armv7
1.命令汇总
方式一:使用rustc编译文件
# 1.toolchain
cd /home/xxxxx/toolchain-aarch64_cortex-a53_gcc-5.2.0_musl-1.1.16/bin
ln -s aarch64-openwrt-linux-gcc aarch64-unknown-linux-gnu-gcc
ln -s aarch64-openwrt-linux-ar aarch64-unknown-linux-gnu-ar
# 2. source code
vi main.rs
....
# 3. build bin
rustc --target=aarch64-unknown-linux-gnu -C linker=aarch64-unknown-linux-gnu-gcc main.rs
- 使用cargo管理项目
# 1.new cargo config
vi .cargo/config
/*
[target.aarch64-unknown-linux-gnu]
linker = "aarch64-unknown-linux-gnu-gcc"
*/
# 2.build
cargo b --target=aarch64-unknown-linux-gnu --release
2.详细配置
2.1 搭建toolchain
1.toolchain配置
1.1 我的toolchain路径如下:
/*
/home/xxxxx/toolchain-aarch64_cortex-a53_gcc-5.2.0_musl-1.1.16
*/
> 1.2 查看当前支持的taget-cpus
rustc --print target-list
==> aarch64-unknown-linux-gnu //这是我的环境,linux GUN arm64
> 1.3 修改toolchain编译器名称,符合rust要求
cd /home/xxxxx/toolchain-aarch64_cortex-a53_gcc-5.2.0_musl-1.1.16/bin
ln -s aarch64-openwrt-linux-gcc aarch64-unknown-linux-gnu-gcc
ln -s aarch64-openwrt-linux-ar aarch64-unknown-linux-gnu-ar
> 1.4 添加PATH,方法很多,我直接修改了当前用户的profile
vi ~/.profile
/*
1 if [ -d "$HOME/xxx/bin" ] ; then
30 PATH="$HOME/xxxxx/bin:$PATH"
1 PATH="$HOME/xxxxx/lib:$PATH"
2 fi
*/
> 1.4.1 更新当前.profile 或者打开新shell 来更新PATH
> 1.5 直接输入命令 测试PATH是否可用
aarch64-unknown-linux-gnu-gcc // PATH测试而已
2.2 source code
找个目录,新建个文件,随便输入点代码
/* file : main.rs */
fn main() {
println!("Hello, world!");
}
2.3 编译命令
编译时指定下target、linker,linker是个最基本的东西,不错的话,大概率是可以一步交叉编译PASS的。
- 命令参考如下:
rustc --target=aarch64-unknown-linux-gnu -C linker=aarch64-unknown-linux-gnu-gcc main.rs
3.目标板运行
/* IPQ807x */
root@OpenWrt:/# Hello , World!
4.补充说明
4.1 用cargo管理上述toolchain代码
4.1.1 新建cargo配置文档
新建.cargo/config 文件
添加linker进入 (我用的这个路径已经添加到PATH中了)
$ cat .cargo/config
[target.aarch64-unknown-linux-gnu]
linker = "aarch64-unknown-linux-gnu-gcc"
4.1.2 编译命令
参考如下:执行target
cargo b --target=aarch64-unknown-linux-gnu --release
生成文件路径:
./target/aarch64-unknown-linux-gnu/release/xxxxxxxxx