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

C++如何从Windows系统交叉编译生成Linux平台的*.so动态库

Windows端编译C++代码为Linux .so动态库的交叉编译方案

完全有可直接使用的工具链满足需求,常用的可落地方案分为两类:

方案1:MSYS2 预编译交叉工具链(纯Windows环境运行)

  • 首先安装MSYS2环境,通过自带的pacman包管理器可直接下载对应目标架构的Linux交叉编译工具链:x86_64架构Linux目标安装mingw-w64-x86_64-gcc-cross-linux,arm/arm64架构Linux目标安装对应前缀的交叉编译包即可
  • 编译时指定编译器为对应前缀的g++(如x86_64-linux-gnu-g++),编译参数添加-shared -fPIC,即可直接输出符合Linux标准的.so动态库

方案2:WSL2 原生编译(适配成本最低,优先推荐)

  • 开启Windows的WSL2功能后,安装和你.so运行目标一致的Linux发行版镜像,避免后续glibc版本不兼容问题
  • 在WSL2环境内直接安装原生g++/gcc工具链,将C++源码放在Windows与WSL2的共享目录中,直接执行Linux原生编译命令g++ -shared -fPIC 你的源码列表 -o 输出库名.so,得到的就是可直接在目标Linux环境运行的.so文件
  • 该方案几乎没有交叉编译的依赖适配坑,所有C++模块依赖的第三方库都可以直接通过Linux发行版的包管理器安装对应开发包,适配效率远高于纯交叉编译方案

注意事项

  • 无论用哪种方案,编译Linux动态库必须添加-fPIC参数,否则会触发链接错误
  • 如果你的C++模块依赖较多第三方库,优先选择WSL2方案,避免逐个交叉编译依赖的额外工作量

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 09:45:05