温馨提示×

Linux C++怎么实践

小樊
33
2026-07-31 20:12:34
栏目: 编程语言

在 Linux 下实践 C++,建议按**“环境 → 基础 → 工程 → 进阶 → 项目”的路线来,下面给你一套可直接照做的实践路线**,偏实战、偏工程化。


一、准备 Linux C++ 开发环境

1️⃣ 系统选择

推荐:

  • Ubuntu / Debian(新手友好)
  • CentOS / Rocky / Alma(偏服务器)

虚拟机 / WSL2 / 真机都可以。


2️⃣ 安装基础工具

sudo apt update
sudo apt install -y \
    build-essential \
    gdb \
    cmake \
    git \
    clang \
    clang-format \
    valgrind

检查:

g++ --version
cmake --version

二、从“能跑”开始:Hello World

1️⃣ 手写一个 C++ 程序

// main.cpp
#include <iostream>

int main() {
    std::cout << "Hello Linux C++" << std::endl;
}

2️⃣ 编译 & 运行

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

3️⃣ 常用编译参数(很重要)

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

含义:

  • -std=c++17:使用 C++17
  • -Wall -Wextra:打开警告
  • -O2:优化

三、理解 Linux 下 C++ 的实际工作方式

1️⃣ 编译过程(面试/实践都重要)

源码 → 预处理 → 编译 → 汇编 → 链接

可逐步看:

g++ -E main.cpp -o main.i
g++ -S main.cpp -o main.s
g++ -c main.cpp -o main.o
g++ main.o -o hello

2️⃣ 静态库 / 动态库(工程必备)

静态库

g++ -c math.cpp
ar rcs libmath.a math.o
g++ main.cpp -L. -lmath

动态库

g++ -fPIC -shared math.cpp -o libmath.so
g++ main.cpp -L. -lmath
export LD_LIBRARY_PATH=.

四、工程化:用 CMake(强烈推荐)

1️⃣ 最小 CMake 项目

project/
├── CMakeLists.txt
├── main.cpp
cmake_minimum_required(VERSION 3.10)
project(demo)

set(CMAKE_CXX_STANDARD 17)

add_executable(demo main.cpp)

2️⃣ 构建方式

mkdir build
cd build
cmake ..
make

Linux C++ 工程几乎都用 CMake


五、调试 & 性能 & 质量工具(非常重要)

1️⃣ 调试:gdb

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

常用:

break main
run
next
step
print var
backtrace

2️⃣ 内存检查:Valgrind

valgrind --leak-check=full ./main

3️⃣ 代码格式化

clang-format -i *.cpp

六、Linux 系统编程实践(C++ 特色)

1️⃣ 文件和 IO

#include <fcntl.h>
#include <unistd.h>

实践:

  • 文件复制
  • 目录遍历
  • mmap

2️⃣ 多进程 / 多线程

  • fork
  • pthread
  • std::thread
  • 互斥锁 / 条件变量

3️⃣ 网络编程(重点)

  • socket
  • epoll
  • 写一个简单 HTTP / echo server

七、推荐学习项目(由浅入深)

入门

  • 计算器
  • 日志库
  • 配置文件解析器

进阶

  • 线程池
  • 简易 HTTP Server
  • 聊天室(epoll + 多线程)

高级

  • 小型 STL
  • 协程实现
  • 内存池

八、学习资源推荐

书籍

  • 《Linux 高性能服务器编程》
  • 《C++ Primer》
  • 《UNIX 环境高级编程》

在线

  • man 手册:man 2 open
  • cppreference.com
  • GitHub 开源项目阅读

九、你可以这样问我下一步

你可以继续问:

  • “给我一个 Linux C++ 练手项目”
  • “Linux C++ 面试常考什么”
  • “怎么学网络编程”
  • “如何写高性能服务”

我可以按你的目标(就业 / 工程 / 内核 / 嵌入式)给你定一个专属学习路线

0