Ubuntu 20.04 C++开发环境搭建指南(2025版)

系统准备 安装工具链 配置编辑器 创建C++项目 构建与调试 高级配置


一、系统准备

1.1 更新软件源

bash 复制代码
sudo apt update && sudo apt upgrade -y

二、安装开发工具链

2.1 基础编译环境

bash 复制代码
sudo apt install build-essential gdb

包含GCC/G++/Make等核心工具

2.2 安装CMake

bash 复制代码
sudo apt install cmake

验证安装:

bash 复制代码
cmake --version  # 应显示3.16+版本

2.3 可选工具

bash 复制代码
sudo apt install git clang-format  # 版本控制和代码格式化

三、配置Vim编辑器

3.1 基础配置(~/.vimrc)

vim 复制代码
set number
syntax on
set tabstop=4
set shiftwidth=4
set expandtab
set autoindent

vim-example.png

3.2 扩展配置

vim 复制代码
" 启用文件树插件
call plug#begin('~/.vim/plugged')
Plug 'preservim/nerdtree'
call plug#end()

输入:PlugInstall安装插件


四、创建C++项目

4.1 项目结构

markdown 复制代码
my_project/
├── CMakeLists.txt
├── include/
│   └── utils.h
└── src/
    ├── main.cpp
    └── utils.cpp

4.2 示例代码

cpp 复制代码
// main.cpp
#include "utils.h"

int main() {
    print_hello();
    return 0;
}

五、CMake构建系统

5.1 基础CMake配置

cmake 复制代码
cmake_minimum_required(VERSION 3.10)
project(MyProject)

set(CMAKE_CXX_STANDARD 17)

add_executable(my_project 
    src/main.cpp 
    src/utils.cpp
)

target_include_directories(my_project
    PRIVATE ${PROJECT_SOURCE_DIR}/include
)

cmake-flow.png

5.2 构建命令

bash 复制代码
mkdir build && cd build
cmake ..
make -j4  # 使用4核并行编译
./my_project

六、调试与优化

6.1 GDB调试

bash 复制代码
gdb ./build/my_project
(gdb) break main
(gdb) run

6.2 性能分析

bash 复制代码
valgrind --leak-check=full ./build/my_project

七、高级配置(可选)

7.1 VSCode集成

  1. 安装C/C++扩展
  2. 配置.vscode/tasks.json
json 复制代码
{
    "version": "2.0.0",
    "tasks": [{
        "label": "build",
        "type": "shell",
        "command": "cmake --build build"
    }]
}

7.2 跨平台构建

cmake 复制代码
if(WIN32)
    add_definitions(-DWINDOWS)
elseif(UNIX)
    add_definitions(-DLINUX)
endif()

Project +CMakeLists.txt +include/ +src/ +build/ CMake +configure() +build() Compiler +g++ +clang++

相关推荐
我变成萤火虫16 小时前
河南萌新联赛2026第(四)场:南阳理工学院
数据结构·c++·算法·贪心算法·stl·动态规划
动力 continue19 小时前
Linux 基础篇 · 压缩打包与用户管理
linux·服务器·基础命令linux
余额瞒着我当琳20 小时前
C++--深拷贝三件套 + swap + 写时拷贝 + vector 扩容 + reserve
java·开发语言·c++
NJCloud20 小时前
Ansible(三)——Zabbix 监控系统部署与敏感信息加密
linux·运维·chrome·信息可视化·ansible·zabbix
ltl21 小时前
Cgroups v2:为什么内存限制设了,宿主机数据库还是被 OOM
linux
NJCloud21 小时前
TiDB 集群部署与 MySQL 兼容性适配实战
linux·运维·数据库·mysql·tidb
2401_8685347821 小时前
UNIX常用命令英文全称与中文解释整理
linux·运维
ShineWinsu21 小时前
对于C++:布隆过滤器(bloomfilter)的详细解析
c++·面试·位图·位运算·布隆过滤器·海量数据·比特位
阿祖zu1 天前
开源项目-让本地 Codex 临时接管远程 Linux 服务,实现快速运维
linux·gpt·agent
Android系统攻城狮1 天前
Linux PipeWire深度解析之pw_factory_create_object调用流程与实战(七十二)
linux·音频进阶·pipewire音频进阶