Rust在Linux上的跨平台开发策略
一、策略总览
二、环境与工具链配置
三、构建与交叉编译流程
[target.x86_64-pc-windows-gnu]
linker = "x86_64-w64-mingw32-gcc"
[target.aarch64-unknown-linux-gnu]
linker = "aarch64-linux-gnu-gcc"
四、代码与依赖的跨平台实践
#[cfg(target_os = "linux")]
fn platform_impl() { /* Linux 专属 */ }
#[cfg(target_os = "windows")]
fn platform_impl() { /* Windows 专属 */ }
fn main() {
if cfg!(target_os = "linux") {
platform_impl();
}
}
[target.'cfg(unix)'.dependencies]
libc = "0.2"
[target.'cfg(windows)'.dependencies]
winapi = { version = "0.3", features = ["winuser"] }
[dependencies]
log = "0.4"
env_logger = "0.9"
// main.rs
env_logger::init();
log::info!("Start on {}", std::env::consts::OS);
五、测试、CI与分发
name: CI
on: [push, pull_request]
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
steps:
- uses: actions/checkout@v4
- name: Install Rust
run: rustup default stable
- name: Build
run: cargo build --release
- name: Test
run: cargo test --release