树莓派之旅-在wsl-x86-64 上进行树莓派的交叉编译
前情提要:
想把自己花里胡哨的终端丢到树莓派上去,可是树莓派算力不够,编译时间过于漫长
交叉编译
定义网上有,懒得复制了,大概就是在本机电脑上编译目标平台的可执行文件
这里的目标平台是树莓派 使用 uname -m
可以发现其平台为armv7
编译环境的配置
编译器的选择
观察rustc 的target 我们通常有两个选择(gnu 和 musl),由于gnu偏向动态库,musl偏向静态库,于是我选择musl编译器
编译器的下载
综上所述,我选择armv7l-linux-musleabihf 作为编译目标
下载链接 https://musl.cc/armv7l-linux-musleabihf-cross.tgz
使用 tar zxvf armv7l-linux-musleabihf-cross.tgz -C ./musl-cc
解压到文件夹
rust工具链的指定
rust可以方便的添加工具链
执行 rustup target add armv7-unknown-linux-gnueabihf
安装armv7l-linux-musleabihf
工具链
现在万事俱备
编译流程
设置环境变量
在下载完编译器后,将其添加到环境变量中 路径按照自己的来
export PATH=$PWD//musl-cc/bin:$PATH
进行交叉编译
执行命令 RUSTFLAGS="-C linker=armv7l-linux-musleabihf-ld" CC=armv7l-linux-musleabihf-gcc CXX=armv7l-linux-musleabihf-g++ cargo install --target armv7-unknown-linux-musleabihf starship --root ./starship --locked
该命令指定C编译器为刚才下载的armv7l-linux-musleabihf-gcc
,CXX编译器为armv7l-linux-musleabihf-g++
,链接器为armv7l-linux-musleabihf-ld
编译产物位于当前目录下的./starship/bin
中,利用scp拷贝至树莓派
最后按照starship的文档进行配置
编译完成