在CentOS上,首先通过rustup工具安装Rust(Rust的版本管理和工具链工具)。打开终端运行以下命令:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
安装完成后,执行source $HOME/.cargo/env将Rust添加到环境变量,再通过rustc -V和cargo -V验证安装是否成功。
跨平台开发的第一步是添加需要编译的目标平台(即目标操作系统的架构和ABI组合)。使用rustup target add命令添加目标,例如:
rustup target add x86_64-pc-windows-gnurustup target add x86_64-unknown-linux-gnurustup target add armv7-unknown-linux-gnueabihf可通过rustup target list查看所有可用的目标平台。
为避免交叉编译时的链接器错误,需在~/.cargo/config.toml(若不存在则新建)中配置目标平台的链接器。例如,编译到x86_64-pc-windows-gnu目标时,需指定跨平台GCC工具链(如x86_64-w64-mingw32-gcc,需提前通过yum或下载安装):
[target.x86_64-pc-windows-gnu]
linker = "x86_64-w64-mingw32-gcc"
ar = "x86_64-w64-mingw32-ar"
对于x86_64-unknown-linux-gnu等常用目标,通常无需额外配置(Rust默认包含对应的工具链)。
std::fs(文件操作)、std::io(输入输出)、std::path::Path(路径处理),避免直接调用操作系统特定API(如Windows的Win32 API或Linux的libc)。#[cfg]属性针对不同平台编写特定代码。例如:#[cfg(target_os = "windows")]
fn platform_specific_function() {
println!("Running on Windows!");
}
#[cfg(target_os = "linux")]
fn platform_specific_function() {
println!("Running on Linux!");
}
fn main() {
platform_specific_function();
}
支持的平台条件包括target_os(操作系统)、target_arch(架构)、target_env(环境,如gnu/musl)等。使用cargo build命令指定目标平台进行编译。例如:
cargo build --target x86_64-pc-windows-gnu --releasecargo build --target x86_64-unknown-linux-gnu --release编译完成后,可执行文件会生成在target/<目标平台>/release目录下(如target/x86_64-pc-windows-gnu/release/my_app.exe)。
cross工具:封装了交叉编译的复杂配置(如自动下载目标工具链、设置环境变量),简化命令。安装:cargo install cross,使用:cross build --target x86_64-pc-windows-gnu --release。rust:latest镜像构建项目,生成的二进制文件可直接在任何Linux系统上运行。.exe文件,可使用cargo-bundle打包为安装包;musl工具链,如rustup target add x86_64-unknown-linux-musl),或使用cargo-deb打包为.deb安装包;.app文件,可使用cargo-bundle打包为App Bundle。通过以上步骤,即可在CentOS上实现Rust的跨平台开发,生成适用于Windows、Linux、macOS等操作系统的应用程序。