温馨提示×

Linux C++怎么编译

小樊
40
2026-07-17 06:14:03
栏目: 编程语言

在 Linux 下编译 C++ 程序,最常用的是 g++(GCC 的 C++ 编译器)。下面从简单到进阶给你一个完整说明。


一、最简单的编译方式

1️⃣ 单个源文件

// main.cpp
#include <iostream>
int main() {
    std::cout << "Hello Linux C++" << std::endl;
    return 0;
}

编译:

g++ main.cpp

生成默认可执行文件:

./a.out

✅ 输出:

Hello Linux C++

2️⃣ 指定输出文件名

g++ main.cpp -o hello

运行:

./hello

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

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

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

参数说明:

参数 作用
-Wall 开启常用警告
-Wextra 额外警告
-g 生成调试信息(用于 gdb)
-o 指定输出文件名

✅ 指定 C++ 标准

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

三、多文件编译

示例结构

.
├── main.cpp
├── foo.cpp
└── foo.h

编译:

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

四、分开编译(生成 .o 文件)

适合中大型项目:

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

优点:

  • 只重新编译修改过的文件
  • 加快编译速度

五、使用 Makefile(推荐)

示例 Makefile

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

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

六、使用 CMake(现代 C++ 项目首选)

CMakeLists.txt

cmake_minimum_required(VERSION 3.10)
project(MyApp)

set(CMAKE_CXX_STANDARD 17)

add_executable(app main.cpp foo.cpp)

编译:

mkdir build
cd build
cmake ..
make
./app

七、检查是否安装 g++

g++ --version

如果没有安装:

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

八、常见错误

错误 原因
g++: command not found 未安装 g++
undefined reference 没链接源文件或库
stray '\' in program Windows 换行符问题

九、调试(gdb)

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

如果你愿意,我可以:

  • ✅ 手把手教你写 Makefile
  • ✅ 讲 CMake 工程结构
  • ✅ 教你 Linux C++ 实战项目(网络 / 多线程 / 系统编程)

你现在用的是 Ubuntu / CentOS / Arch 还是 WSL?

0