温馨提示×

c++在linux如何编译

小樊
38
2026-09-14 06:29:11
栏目: 编程语言

在 Linux 下编译 C++ 程序,最常用、最基础的方式是使用 g++(GNU C++ 编译器)。下面按从简单到常见场景给你说明。


一、最基础的编译方式

1️⃣ 安装 g++

大多数 Linux 发行版已自带,如果没有:

# 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++ 文件

假设有文件 hello.cpp

#include <iostream>
using namespace std;

int main() {
    cout << "Hello, Linux!" << endl;
    return 0;
}

编译:

g++ hello.cpp

生成可执行文件(默认叫 a.out):

./a.out

指定输出文件名:

g++ hello.cpp -o hello
./hello

二、常用编译选项

g++ hello.cpp -o hello -std=c++17 -Wall -O2

常用参数说明:

参数 作用
-o 指定输出可执行文件名
-std=c++11/14/17/20 指定 C++ 标准
-Wall 显示所有警告
-Wextra 额外警告
-O2 优化编译
-g 加入调试信息(gdb 用)

三、多文件编译

假设:

main.cpp
func.cpp
func.h

方式一(直接编译):

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

方式二(分步编译):

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

四、使用 Makefile(推荐)

Makefile 示例:

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

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

main.o: main.cpp func.h
	$(CXX) -c main.cpp

func.o: func.cpp func.h
	$(CXX) -c func.cpp

clean:
	rm -f *.o app

使用:

make
./app
make clean

五、调试(gdb)

编译时加 -g

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

六、现代方式(CMake,推荐项目使用)

目录结构:

project/
├── CMakeLists.txt
├── main.cpp

CMakeLists.txt

cmake_minimum_required(VERSION 3.10)
project(demo)
set(CMAKE_CXX_STANDARD 17)
add_executable(app main.cpp)

编译:

mkdir build
cd build
cmake ..
make
./app

七、常见问题

g++: command not found
→ 没装编译器

Permission denied
→ 用 ./程序名,不是 程序名

❌ 链接错误(undefined reference)
→ 没把 .cpp 文件一起编译


如果你愿意,可以告诉我:

  • 你是 初学者 / 作业 / 项目
  • 用的 Ubuntu / CentOS / 其他
  • 是否使用 多个文件 / 第三方库

我可以给你更针对性的编译方式。

0