在 Ubuntu 上使用 GCC(GNU Compiler Collection) 时,所谓“兼容哪些系统”通常可以从以下几个层面理解:
一、GCC 本身能在哪些系统上运行(宿主系统)
GCC 是跨平台编译器,官方和社区支持非常广泛,常见包括:
✅ Linux 发行版
- Ubuntu / Debian
- CentOS / RHEL / Fedora
- openSUSE / Arch / Mint 等
✅ 其他类 Unix 系统
- macOS(通过 Homebrew 或 MacPorts)
- FreeBSD / OpenBSD / NetBSD
- Solaris
✅ Windows
- WSL(Windows Subsystem for Linux)(推荐)
- MinGW / MSYS2
- Cygwin
在 Ubuntu 上安装的 GCC,原生只能跑在 Linux 环境里,不能直接在裸 Windows 上运行。
二、Ubuntu 上的 GCC 能编译出哪些系统的程序(目标系统)
这取决于是否安装了交叉编译工具链。
1️⃣ 默认情况(原生编译)
Ubuntu 的 GCC 默认编译 本机程序:
- 架构:x86_64 / arm64(取决于你的 Ubuntu)
- 系统:Linux(glibc)
2️⃣ 交叉编译支持的系统
通过安装 gcc-<arch>-linux-gnu,可以编译其他系统/架构的程序:
✅ Linux(其他架构)
- ARM(32/64)
- RISC-V
- MIPS
- PowerPC
- s390x
示例:
sudo apt install gcc-aarch64-linux-gnu
✅ 嵌入式 / 实时系统
- RTOS(配合交叉工具链)
- Android(NDK 中的 clang/gcc)
✅ Windows(通过 MinGW)
sudo apt install gcc-mingw-w64
可编译 .exe 文件。
✅ 裸机(Bare-metal)
- 微控制器(STM32、ESP32 等)
- 需要
arm-none-eabi-gcc 等
三、GCC 支持的编程语言(系统无关)
GCC 兼容多种语言:
- C
- C++
- Fortran
- Ada
- Go(旧版本)
- Objective-C / Objective-C++
四、版本兼容注意(很重要)
- glibc 版本:低版本 Ubuntu 编译的程序,可能不能在高版本运行(反过来通常可以)
- ABI 兼容性:C++ 标准库版本需注意
- 内核版本:太老的系统可能不支持新 GCC 生成的指令
五、一句话总结
Ubuntu 上的 GCC 可以:
- 在 Linux / macOS / WSL 等系统运行
- 默认编译 Linux 程序
- 通过交叉编译支持 ARM、Windows、嵌入式、裸机等系统
如果你有具体需求(比如“Ubuntu GCC 编译 Windows 程序”或“编译树莓派程序”),可以告诉我,我可以给你具体命令。