[编译工具]rust交叉编译的使用方法

版权声明:未经博主允许不得转载(https://github.com/ai-word) https://blog.csdn.net/BaiHuaXiu123/article/details/89631626

写程序时,很多时候一般都在本地电脑上写,本地电脑系统有可能是Mac电脑,windows电脑。与线上的系统存在不匹配的问题。这时就需要用到交叉编译,把本地电脑的程序通过交叉编译环境编译成线上服务对应系统版本的可执行程序。

用到交叉编译

  • C、C++交叉编译,如果进行嵌入式开发时,需要arm-linux-gcc交叉编译;
  • 使用GO语言时,把本地代码编译成线上系统可执行的二进制文件时,需要用到交叉编译 :GO_ENABLED=0 GOOS=linux GOARCH=amd64 go build

在这里插入图片描述

大致过程就是这样的
本地系统:mac系统
目标系统:centos(linux)系统
语言:rust

具体操作步骤如下

1)安装brew包管理工具
如果安装了,忽略
执行下面命令:

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

2)安装musl-cross 工具
musl-cross 是用来专门编译到 linux 的工具链
ingw-w64 是用来编译到 windows 的工具链

$ brew install FiloSottile/musl-cross/musl-cross  
$ brew install mingw-w64  

3)在~/.cargo/config配置参数
在该文件的末尾加上下面这条交叉编译工具

[target.x86_64-unknown-linux-musl]
linker = "x86_64-linux-musl-gcc"

4)rustup安装
rustup 是 Rust 的包管理工具,用它来配置工具链可以很省心

$ curl https://sh.rustup.rs -sSf | sh

5) 查看支持的目标平台

$ rustup target list

可以看到rust支持的平台非常多,iOS,arm,x86(window系统)等等

aarch64-apple-ios
aarch64-fuchsia
aarch64-linux-android
aarch64-pc-windows-msvc
aarch64-unknown-cloudabi
aarch64-unknown-linux-gnu
aarch64-unknown-linux-musl
arm-linux-androideabi
arm-unknown-linux-gnueabi
arm-unknown-linux-gnueabihf
arm-unknown-linux-musleabi
arm-unknown-linux-musleabihf
armebv7r-none-eabi
armebv7r-none-eabihf
armv5te-unknown-linux-gnueabi
armv5te-unknown-linux-musleabi
armv7-apple-ios
armv7-linux-androideabi
armv7-unknown-linux-gnueabihf
armv7-unknown-linux-musleabihf
armv7r-none-eabi
armv7r-none-eabihf
armv7s-apple-ios
asmjs-unknown-emscripten
i386-apple-ios
i586-pc-windows-msvc
i586-unknown-linux-gnu
i586-unknown-linux-musl
i686-apple-darwin
i686-linux-android
i686-pc-windows-gnu
i686-pc-windows-msvc
i686-unknown-freebsd
i686-unknown-linux-gnu
i686-unknown-linux-musl
mips-unknown-linux-gnu
mips-unknown-linux-musl
mips64-unknown-linux-gnuabi64
mips64el-unknown-linux-gnuabi64
mipsel-unknown-linux-gnu
mipsel-unknown-linux-musl
powerpc-unknown-linux-gnu
powerpc64-unknown-linux-gnu
powerpc64le-unknown-linux-gnu
riscv32imac-unknown-none-elf
riscv32imc-unknown-none-elf
s390x-unknown-linux-gnu
sparc64-unknown-linux-gnu
sparcv9-sun-solaris
thumbv6m-none-eabi
thumbv7em-none-eabi
thumbv7em-none-eabihf
thumbv7m-none-eabi
wasm32-unknown-emscripten
wasm32-unknown-unknown (installed)
x86_64-apple-darwin (default)
x86_64-apple-ios
x86_64-fuchsia
x86_64-linux-android
x86_64-pc-windows-gnu
x86_64-pc-windows-msvc
x86_64-rumprun-netbsd
x86_64-sun-solaris
x86_64-unknown-cloudabi
x86_64-unknown-freebsd
x86_64-unknown-linux-gnu
x86_64-unknown-linux-gnux32

6)安装第三条在config配置的target.x86_64-unknown-linux-musl工具

$ rustup target add x86_64-unknown-linux-musl

7) 准备源代码进行交叉编译

$ cargo build --target=x86_64-unknown-linux-musl

8) 把编译好的程序放到对应的系统上去执行
在这里插入图片描述

如果想编译其它系统的可执行文件,方法同理。
资源下载
[资源下载]https://github.com/ai-word
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/BaiHuaXiu123/article/details/89631626