7.3. 命令速查

7.3.1. 编译器命令

7.3.1.1. GCC/G++

# 基本编译
g++ -o program source.cpp

# 常用选项
-std=c++20       # C++ 标准版本
-O0/-O1/-O2/-O3  # 优化级别
-g               # 调试信息
-Wall            # 所有警告
-Wextra          # 额外警告
-Werror          # 警告视为错误
-pedantic        # 严格标准
-I/path          # 包含目录
-L/path          # 库目录
-lname           # 链接库
-DNAME=value     # 定义宏
-fPIC            # 位置无关代码
-shared          # 生成共享库
-static          # 静态链接

# 推荐开发选项
g++ -std=c++20 -Wall -Wextra -Wpedantic -g source.cpp

# 推荐发布选项
g++ -std=c++20 -O2 -DNDEBUG source.cpp

7.3.1.2. Clang

# 基本使用与 GCC 相同
clang++ -std=c++20 -o program source.cpp

# Clang 特有选项
-stdlib=libc++       # 使用 libc++
-fcolor-diagnostics  # 彩色输出

7.3.2. CMake

# 基本构建
mkdir build && cd build
cmake ..
cmake --build .

# 指定生成器
cmake -G "Ninja" ..
cmake -G "Unix Makefiles" ..

# 指定构建类型
cmake -DCMAKE_BUILD_TYPE=Release ..
cmake -DCMAKE_BUILD_TYPE=Debug ..

# 指定编译器
cmake -DCMAKE_CXX_COMPILER=clang++ ..

# 安装
cmake --install . --prefix /usr/local

7.3.3. Make

make                # 默认目标
make -j8            # 8 个并行任务
make clean          # 清理
make install        # 安装
make VERBOSE=1      # 显示命令
make -n             # 干运行(不执行)

7.3.4. 调试

7.3.4.1. GDB

gdb ./program       # 启动 GDB
gdb -tui ./program  # TUI 模式

# 常用命令
run                 # 运行
break main          # 断点
break file.cpp:10   # 文件行断点
next / n            # 下一行
step / s            # 进入函数
continue / c        # 继续运行
print var           # 打印变量
backtrace / bt      # 调用栈
quit / q            # 退出

7.3.4.2. LLDB

lldb ./program

# 常用命令
run
breakpoint set -n main
breakpoint set -f file.cpp -l 10
next / n
step / s
continue / c
frame variable
thread backtrace
quit

7.3.5. 性能分析

# perf
perf record ./program
perf report
perf stat ./program

# Valgrind
valgrind ./program
valgrind --leak-check=full ./program
valgrind --tool=callgrind ./program
valgrind --tool=massif ./program

# gprof
g++ -pg source.cpp
./a.out
gprof a.out gmon.out > analysis.txt

7.3.6. Sanitizers

# AddressSanitizer
g++ -fsanitize=address -g source.cpp

# ThreadSanitizer
g++ -fsanitize=thread -g source.cpp

# UndefinedBehaviorSanitizer
g++ -fsanitize=undefined -g source.cpp

# MemorySanitizer (Clang only)
clang++ -fsanitize=memory -g source.cpp

7.3.7. 包管理器

7.3.7.1. Conan

# 安装
pip install conan

# 创建配置
conan profile detect

# 安装依赖
conan install . --build=missing

# 搜索包
conan search boost -r conancenter

7.3.7.2. vcpkg

# 安装包
vcpkg install boost:x64-linux
vcpkg install jsoncpp:x64-linux

# 集成到 CMake
cmake -DCMAKE_TOOLCHAIN_FILE=/path/to/vcpkg/scripts/buildsystems/vcpkg.cmake ..

7.3.8. Git 常用命令

git clone url
git status
git add .
git commit -m "message"
git push
git pull

git branch feature
git checkout feature
git merge feature

git log --oneline
git diff
git stash
git stash pop

7.3.9. Docker

# 构建镜像
docker build -t myapp .

# 运行容器
docker run -it --rm myapp

# 挂载卷
docker run -v $(pwd):/app myapp

# 查看
docker ps
docker images
docker logs container_id