You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Rust项目:Windows生成可执行文件,Linux生成共享库?

嘿,这个问题我之前折腾过好一阵子,其实Cargo本身就支持按目标平台条件配置,完全不用写脚本或者手动切换配置文件,就能轻松实现Windows出exe、Linux出共享库的需求!

核心思路

原来的[lib]配置是全局生效的,所以不管哪个平台都会生成共享库(Windows下是.dll,Linux下是.so)。我们要做的就是给不同平台分别指定对应的产物类型:Linux下编译为cdylib,Windows下编译为可执行文件(需要确保你的项目有src/main.rs作为入口)。

具体配置方法

直接修改你的Cargo.toml,用目标平台条件块来覆盖配置:

# 基础库配置,名称统一
[lib]
name = "my_project_name"

# 仅在Linux平台下,编译为共享库
[target.'cfg(target_os = "linux")'.lib]
crate-type = ["cdylib"]

# 仅在Windows平台下,编译为可执行文件
[[bin]]
name = "my_project_name"
path = "src/main.rs"
# 让这个bin目标只在Windows平台生效
cfg = { target_os = "windows" }

补充说明

  1. 代码层面的配合:如果你的可执行文件逻辑是调用库中的代码,只需要在src/main.rs里写Windows专属的入口即可(用条件编译确保Linux下不会编译这段代码):
#[cfg(target_os = "windows")]
fn main() {
    // 这里写Windows可执行文件的逻辑,比如调用库中的核心函数
    my_project_name::run_core_logic();
}
  1. 验证编译结果:
    • Windows环境下执行cargo build,会在target/debug/下生成my_project_name.exe
    • Linux环境下执行cargo build,会在target/debug/下生成libmy_project_name.so
    • 交叉编译也适用,比如在Linux下编译Windows目标:cargo build --target x86_64-pc-windows-msvc,同样会输出exe文件

这种方式完全由Cargo自动处理平台差异,不用手动修改配置,非常省心!

内容的提问来源于stack exchange,提问作者user2551017

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 10:12:50