温馨提示×

linux c++怎么跨平台编译

小樊
49
2026-10-16 18:51:52
栏目: 编程语言

在 Linux 下用 C++ 做跨平台编译,通常目标是:
在 Linux 上编写/编译,生成可在 Windows / macOS / 其他架构上运行的程序。

下面按“常用程度 + 实战角度”给你一个清晰路线。


一、最推荐:用 CMake + 交叉编译(行业标准)

1️⃣ CMake 是什么

CMake 不直接编译,而是生成:

  • Linux: Makefile
  • Windows: Visual Studio 工程
  • macOS: Xcode

✅ 一次写 CMake,多平台编译


2️⃣ Linux → Windows(最常见)

方案 A:MinGW-w64(简单)

sudo apt install mingw-w64

CMake 工具链文件 toolchain-win64.cmake:

set(CMAKE_SYSTEM_NAME Windows)
set(CMAKE_C_COMPILER x86_64-w64-mingw32-gcc)
set(CMAKE_CXX_COMPILER x86_64-w64-mingw32-g++)

编译:

cmake -B build -DCMAKE_TOOLCHAIN_FILE=toolchain-win64.cmake
cmake --build build

✅ 生成 .exe ❌ 不支持 MSVC 特有 API


方案 B:MSVC(更接近 Windows 原生)

  • 用 Wine + VS Build Tools
  • 或用 GitHub Actions / CI

3️⃣ Linux → macOS

Linux 不能直接编译 macOS 可执行文件(苹果限制)

✅ 正确方式:

  • macOS 上编译
  • 或用 CI(GitHub Actions)

4️⃣ 不同 CPU 架构(ARM / RISC-V)

sudo apt install gcc-aarch64-linux-gnu

toolchain:

set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_C_COMPILER aarch64-linux-gnu-gcc)
set(CMAKE_CXX_COMPILER aarch64-linux-gnu-g++)

二、用 Conan / vcpkg 管理依赖(强烈推荐)

跨平台最大的坑是第三方库

Conan(C++ 官方推荐)

pip install conan
[settings]
os=Windows
arch=x86_64
compiler=gcc

三、代码层面:写“可移植 C++”

✅ 避免

#include <windows.h>
#include <unistd.h>

✅ 使用

#include <chrono>
#include <thread>
#include <filesystem>

✅ 条件编译

#ifdef _WIN32
    // Windows
#else
    // Linux / macOS
#endif

四、进阶:容器 & CI 跨平台

Docker(Linux 内多环境)

FROM ubuntu:22.04
RUN apt install g++ cmake

GitHub Actions(真·跨平台)

matrix:
  os: [ubuntu, windows, macos]

五、总结推荐组合

目标 推荐方案
Windows exe CMake + MinGW
多平台库 CMake + Conan
企业项目 CMake + CI
新手 CMake + GCC

如果你愿意,可以告诉我:

  • 要编译到 Windows / macOS / ARM?
  • 是 程序 / 库 / GUI?
  • 用 Makefile 还是 CMake?

我可以给你一个可直接用的模板。

0 踩