温馨提示×

Linux C++编译如何配

小樊
36
2026-07-17 05:27:03
栏目: 编程语言

在 Linux 下编译 C++ 程序,常见做法有 命令行直接编译使用构建工具 两种,下面从简单到进阶系统讲一下。


一、最基础:用 g++ 编译(推荐新手)

1️⃣ 安装编译器

# Ubuntu / Debian
sudo apt update
sudo apt install g++

# CentOS / Rocky / Alma
sudo yum install gcc-c++

# Arch
sudo pacman -S gcc

验证:

g++ --version

2️⃣ 写一个简单的 C++ 程序

// main.cpp
#include <iostream>
using namespace std;

int main() {
    cout << "Hello Linux C++" << endl;
    return 0;
}

3️⃣ 编译 & 运行

g++ main.cpp -o main
./main

✅ 输出:

Hello Linux C++

二、常用编译参数(非常重要)

✅ 开启警告 & 调试信息(强烈推荐)

g++ -Wall -Wextra -g main.cpp -o main

✅ 指定 C++ 标准

g++ -std=c++11 main.cpp
g++ -std=c++17 main.cpp
g++ -std=c++20 main.cpp

✅ 优化

g++ -O2 main.cpp        # 常用
g++ -O3 main.cpp        # 更激进

三、多文件编译

示例结构

project/
├── main.cpp
├── foo.cpp
├── foo.h

编译方式

g++ main.cpp foo.cpp -o app

或分步编译:

g++ -c foo.cpp      # 生成 foo.o
g++ -c main.cpp     # 生成 main.o
g++ foo.o main.o -o app

四、使用 Makefile(工程必备)

示例 Makefile

CXX = g++
CXXFLAGS = -Wall -std=c++17 -O2

app: main.o foo.o
	$(CXX) main.o foo.o -o app

main.o: main.cpp
	$(CXX) $(CXXFLAGS) -c main.cpp

foo.o: foo.cpp
	$(CXX) $(CXXFLAGS) -c foo.cpp

clean:
	rm -f *.o app

使用

make
./app
make clean

五、链接第三方库(以 pthread 为例)

g++ main.cpp -o main -lpthread

如果是自定义库:

g++ main.cpp -L./lib -lmylib

六、使用 CMake(现代 C++ 推荐)

示例 CMakeLists.txt

cmake_minimum_required(VERSION 3.10)
project(demo)

set(CMAKE_CXX_STANDARD 17)

add_executable(demo main.cpp foo.cpp)

构建

mkdir build
cd build
cmake ..
make
./demo

大型项目、跨平台首选


七、调试(gdb)

g++ -g main.cpp -o main
gdb ./main

常用:

run
break main
next
print x

八、常见错误速查

错误 原因
g++: command not found 没装 g++
undefined reference 没链接库 / 没编译 cpp
segmentation fault 野指针 / 越界
std::filesystem 报错 需要 -std=c++17

九、推荐组合(实战)

日常开发

g++ + Makefile

正规项目

g++ + CMake

调试

g++ -g + gdb

如果你愿意,我可以:

  • ✅ 按 Ubuntu / CentOS / Arch 给你定制环境
  • ✅ 教你 VSCode + Linux C++ 配置
  • ✅ 给你一个 完整 C++ 项目模板
  • ✅ 讲 静态库 / 动态库 / 交叉编译

你现在是 初学者 还是 已经在做项目了

0