结论先行:
✅ Ubuntu 上用 C++ 做“跨平台”是完全可行的,而且这是 C/C++ 的强项之一。
但“可行”不等于“自动跨平台”,关键在于怎么写、用什么工具链和库。
下面分维度说清楚。
语言层面:是
C++ 是标准语言(ISO C++),在:
上都有成熟编译器(GCC / Clang / MSVC)。
但:
所以:C++ 可写跨平台代码,但不能裸写系统调用
从 Ubuntu 出发,常见目标:
| 目标平台 | 是否可行 | 方式 |
|---|---|---|
| 其他 Linux | ✅ 极易 | 同架构直接拷 |
| Windows | ✅ | MinGW / MSVC / WSL |
| macOS | ⚠️ 有限 | 需要 macOS 编译 |
| Android | ✅ | NDK |
| iOS | ❌(不能从 Ubuntu 编) | 必须 macOS |
| 嵌入式 | ✅ | 交叉编译 |
#include <iostream>
#include <vector>
int main() {
std::cout << "Hello\n";
}
✅ 全平台可编译
❌ 不能做 GUI / 网络 / 文件监听等
| 需求 | 库 |
|---|---|
| 系统抽象 | Boost, POCO |
| 网络 | libcurl, Boost.Asio |
| 线程 | std::thread |
| GUI | Qt, wxWidgets, SDL |
| 文件/路径 | std::filesystem (C++17) |
✅ Ubuntu 开发 → Windows / macOS 直接编译
推荐:
cmake_minimum_required(VERSION 3.10)
project(demo)
add_executable(demo main.cpp)
✅ Ubuntu 生成:
两种方式:
sudo apt install mingw-w64
x86_64-w64-mingw32-g++ main.cpp -o app.exe
非常适合游戏 / 工具
❌ 不要:
/proc/\n✅ 要:
#ifdef _WIN32std::filesystemUbuntu 开发 → 跨平台桌面程序
✅ 工业级可行(很多商业软件这么做)
Ubuntu 上用 C++ 做跨平台开发,不仅可行,而且是非常主流的做法。
核心就是:标准 C++ + 跨平台库 + CMake + 避免系统耦合
如果你愿意,可以告诉我:
我可以直接给你一套具体方案或模板。