GCC 编译器安装与配置:Linux 下的 GCC 与 Windows 下的 MinGW

说到嵌入式开发,GCC 编译器几乎是绕不开的工具。我最早接触 GCC 是在大学做 Linux 驱动实验的时候,那时候觉得装个编译器嘛,apt-get install 一下就完事了。后来进了企业,才发现事情没那么简单——不同项目对 GCC 版本有严格限制,交叉编译链的配置更是坑多。今天咱们就把 GCC 在 Linux 和 Windows 下的安装配置彻底捋一遍。

Linux 环境下的 GCC 安装

Linux 下安装 GCC 其实是最省心的。但省心不代表可以乱装。我个人习惯先确认系统里有没有现成的版本:

gcc --version
g++ --version

如果系统提示“command not found”,那就需要手动安装了。不同发行版的包管理器不一样,我列个对照表:

发行版 包管理器 安装命令
Ubuntu / Debian apt sudo apt install build-essential
CentOS / RHEL yum sudo yum install gcc gcc-c++
Fedora dnf sudo dnf install gcc gcc-c++
Arch Linux pacman sudo pacman -S gcc

这里有个细节:build-essential 这个包在 Ubuntu 里是个元包,它会自动拉取 GCC、G++、make、libc-dev 等核心工具链。我建议新手直接装这个,省得后面编译时缺头文件。

我的经验: 装完记得跑一遍 gcc --version 确认版本。如果项目要求特定版本(比如 GCC 9.x),可以用 sudo apt install gcc-9 g++-9 指定版本安装,然后用 update-alternatives 切换默认版本。

Windows 环境下的 MinGW 配置

Windows 上没有原生的 GCC,但我们可以用 MinGW(Minimalist GNU for Windows)来获得一个类 Linux 的编译环境。说白了,MinGW 就是 GCC 在 Windows 上的移植版。

我遇到过不少新手直接去官网下载 MinGW,结果装了一堆用不上的组件。这里我推荐两种主流方案:

方案一:MinGW-w64(推荐)

MinGW-w64 是原 MinGW 的升级版,支持 64 位和 32 位编译。我个人习惯用这个,因为它在嵌入式交叉编译场景下更稳定。

  1. 访问 MinGW-w64 官方页面(注意不要下错版本)
  2. 选择 x86_64-posix-seh 或 i686-posix-sjlj(根据你的系统架构)
  3. 解压到 C:\mingw-w64 或你喜欢的目录
避坑指南: 我曾经在 MinGW 版本选择上吃过亏。如果你要编译 Windows 桌面程序,选 seh 异常处理模型;如果是嵌入式交叉编译,选 sjlj 兼容性更好。别问我怎么知道的——那次项目 deadline 前三天才发现异常处理不兼容,差点通宵。

方案二:MSYS2(更现代的选择)

MSYS2 提供了一个类 Linux 的终端环境,内置 pacman 包管理器。如果你习惯 Linux 的工作流,这个方案会让你舒服很多。

# 安装基础工具链
pacman -S mingw-w64-x86_64-toolchain

# 或者只装 GCC
pacman -S mingw-w64-x86_64-gcc

MSYS2 的好处是包管理方便,更新也及时。但缺点是需要多学一个包管理器的用法。

环境变量设置

装完编译器只是第一步。如果不配环境变量,你在命令行里敲 gcc 系统还是找不到。环境变量的作用,说白了就是告诉操作系统:“嘿,我的编译器放在这个目录下,你帮我记住。”

Linux 环境变量配置

Linux 下配置环境变量通常修改 ~/.bashrc 或 ~/.zshrc:

# 打开配置文件
vim ~/.bashrc

# 在文件末尾添加
export PATH=$PATH:/usr/local/gcc-9.3.0/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/gcc-9.3.0/lib

# 使配置生效
source ~/.bashrc

这里有个小技巧:如果你安装了多个 GCC 版本,可以用 alias 来区分:

alias gcc9='/usr/local/gcc-9.3.0/bin/gcc'
alias gcc10='/usr/local/gcc-10.2.0/bin/gcc'

Windows 环境变量配置

Windows 的配置稍微繁琐一点,但逻辑是一样的:

  1. 右键“此电脑” → 属性 → 高级系统设置 → 环境变量
  2. 在“系统变量”中找到 Path,双击编辑
  3. 点击“新建”,添加 MinGW 的 bin 目录,比如 C:\mingw-w64\mingw64\bin
  4. 点击确定,保存退出
验证配置: 打开新的命令提示符(一定要新开窗口),输入 gcc --version。如果显示版本信息,说明配置成功。如果提示“不是内部或外部命令”,检查路径是否写错,或者有没有重启终端。

知识体系总览

下面这张图把 GCC 安装配置的核心逻辑串起来了。你想想看,从选择平台到配置环境变量,每一步都有坑,但掌握了规律就不怕了。

GCC 安装配置知识体系 GCC 编译器安装配置 Linux 环境 Windows 环境 环境变量设置 apt / yum / dnf 版本管理 MinGW-w64 MSYS2 PATH 配置 验证:gcc --version / g++ --version 核心原则 选择适合项目的版本 → 正确配置环境变量 → 验证编译是否通过

常见问题与避坑指南

  • 版本冲突: 系统自带的 GCC 版本可能和项目要求的不一致。我建议用 update-alternatives 管理多版本,或者用 Docker 隔离环境。
  • 32位 vs 64位: 嵌入式开发经常需要交叉编译。MinGW-w64 的 -m32 和 -m64 参数可以切换目标架构,但前提是你装了对应的库。
  • 路径含空格: Windows 下如果 MinGW 装在 Program Files 里,路径中的空格可能导致编译失败。我习惯装在 C:\mingw 这种无空格的目录。
  • 环境变量不生效: 改了环境变量后一定要新开终端窗口。旧窗口的环境变量缓存不会自动刷新。
我曾经踩过的坑: 有一次在 Windows 上配完 MinGW,gcc --version 显示正常,但编译时总报找不到 stdio.h。折腾了半天才发现是装错了版本——我下了不带 win32 线程模型的版本,导致头文件路径不对。所以下载时一定要看清楚 posix 还是 win32 线程模型。

嗯,到这里 GCC 的安装配置就讲完了。记住一个原则:先确认需求,再选择版本,最后验证环境。别急着写代码,先把工具链搞稳了,后面才能省心。