{"title": "\u5728MIPS Openwrt\u4e0a\u8fd0\u884cRust\u7a0b\u5e8f", "update_time": "2021-08-22 11:56:01", "tags": "rust openwrt", "pid": "352", "icon": "linux.png"}
# 在MIPS Openwrt上运行Rust程序 ## 设备和系统 * 路由器: NETGEAR WNDR 3700v4 Openwrt 19.07 * 开发机:macOS BigSur 11.3.1 ``` root@OpenWrt:~# cat /proc/cpuinfo system type : Atheros AR9344 rev 2 machine : NETGEAR WNDR3700v4 processor : 0 cpu model : MIPS 74Kc V4.12 BogoMIPS : 278.93 wait instruction : yes microsecond timers : yes tlb_entries : 32 extra interrupt vector : yes hardware watchpoint : yes, count: 4, address/irw mask: [0x0ffc, 0x0ffc, 0x0ffb, 0x0ffb] isa : mips1 mips2 mips32r1 mips32r2 ASEs implemented : mips16 dsp dsp2 Options implemented : tlb 4kex 4k_cache prefetch mcheck ejtag llsc dc_aliases perf_cntr_intr_bit nan_legacy nan_2008 perf shadow register sets : 1 kscratch registers : 0 package : 0 core : 0 VCED exceptions : not available VCEI exceptions : not available ``` ## 因为Mac上没有OpenWRT对应的toolchain,因此需要在Linux环境下做开发 使用docker 构建Linux环境 ``` docker pull centos ``` 进入docker ``` docker run -ti -v /tmp:/tmp centos /bin/bash ``` 搭建rust环境 ``` curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh ``` Rust增加MIPS支持 ``` rustup target add mips-unknown-linux-musl ``` ## 下载OpenWRT编译toolchain 找到对应路由器的toolchain,不同的cpu不一样,我的WNDR 3700v4的cpu对应的mips * https://downloads.openwrt.org/releases//19.07.0/targets/ar71xx/nand/ 下载对应的 openwrt-sdk-19.07.0-ar71xx-nand_gcc-7.5.0_musl.Linux-x86_64.tar.xz * 解压安装 openwrt toolchain ``` tar -xvf openwrt-sdk-19.07.0-ar71xx-nand_gcc-7.5.0_musl.Linux-x86_64.tar.xz mv openwrt-sdk-19.07.0-ar71xx-nand_gcc-7.5.0_musl.Linux-x86_64 /opt/ cat >> ~/.bashrc <<"EOF" export PATH=$PATH:/opt/openwrt-sdk-19.07.0-ar71xx-nand_gcc-7.5.0_musl.Linux-x86_64/staging_dir/toolchain-mips_24kc_gcc-7.5.0_musl/bin/ EOF cat >> ~/.cargo/config <