网站关键词推广价格清远网站seo公司
前情提要:
想把自己花里胡哨的终端丢到树莓派上去,可是树莓派算力不够,编译时间过于漫长
 
交叉编译
定义网上有,懒得复制了,大概就是在本机电脑上编译目标平台的可执行文件
 这里的目标平台是树莓派 使用 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的文档进行配置
 编译完成
 
