温馨提示×

ubuntu c++配置要注意什么

小樊
50
2026-09-20 16:40:25
栏目: 编程语言

在 Ubuntu 上进行 C++ 开发/配置,通常关注编译器、构建系统、依赖管理、调试工具、标准与兼容性问题。下面按“新手→进阶”给你一个实用清单。


一、基础环境配置

1. 安装编译器

Ubuntu 默认可能没有 g++:

sudo apt update
sudo apt install build-essential

包含:

  • gcc / g++
  • make
  • 基本开发库

查看版本:

g++ --version

2. 指定 C++ 标准(非常重要)

Ubuntu 旧版本 g++ 默认可能不是 C++17:

g++ main.cpp -std=c++17 -o app

常见标准:

  • -std=c++11
  • -std=c++14
  • -std=c++17
  • -std=c++20

二、常用编译选项(推荐)

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

含义:

  • -Wall -Wextra:开警告(很重要)
  • -O2:优化
  • -g:生成调试信息(调试时必须)

调试版本:

g++ main.cpp -g -std=c++17 -o app

三、构建系统选择

1. Make(简单项目)

示例 Makefile:

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

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

clean:
	rm -f app

2. CMake(推荐,工程化)

安装:

sudo apt install cmake

最小 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

四、依赖与库管理

1. 系统库(apt)

例如使用 OpenSSL:

sudo apt install libssl-dev

编译:

g++ main.cpp -lssl -lcrypto

2. 第三方库常见问题

  • 头文件路径:-I/path/include
  • 库路径:-L/path/lib
  • 链接库:-lxxx

示例:

g++ main.cpp -I/opt/mylib/include -L/opt/mylib/lib -lmylib

五、调试与工具(强烈推荐)

1. GDB

sudo apt install gdb
gdb ./app

常用:

run
break main
next
print x

2. Valgrind(内存检查)

sudo apt install valgrind
valgrind ./app

3. 静态分析

sudo apt install clang
clang --analyze main.cpp

六、Ubuntu 特有注意事项

1. glibc 版本兼容

  • 在低版本 Ubuntu 编译,高版本可运行
  • 高版本编译,不一定能在低版本运行

查看 glibc:

ldd --version

2. 动态库运行时找不到

报错:

error while loading shared libraries

解决:

export LD_LIBRARY_PATH=/your/lib/path:$LD_LIBRARY_PATH

或写入 /etc/ld.so.conf.d/


3. 架构问题

查看:

uname -m
  • x86_64
  • aarch64(ARM)

交叉编译需额外工具链。


七、IDE / 编辑器推荐

  • VSCode + C++ 插件(最常用)
  • CLion(付费但强大)
  • Vim / Neovim + ccls

八、常见坑总结(重点)

✅ 一定要指定 -std=c++xx
✅ 开 -Wall -Wextra
✅ 调试一定加 -g
✅ 不要把 .o 和源码混在一起(用 build/)
✅ apt 装的 -dev 包才是开发用
✅ 动态库运行时路径要配置


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

  • Ubuntu 版本
  • 用的构建工具(Make / CMake)
  • 项目类型(命令行 / 网络 / GUI / 嵌入式)

我可以直接给你一套可复制的配置模板。

0 踩