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++

相关推荐
mzhan01729 分钟前
Linux: signal: SIGALRM; alarm: ITIMER_REAL
linux·运维·服务器
mzhan01744 分钟前
Linux: compare的直观性
java·linux·服务器
AbandonForce1 小时前
哈希表(HashTable,散列表)个人理解
开发语言·数据结构·c++·散列表
原来是猿1 小时前
TCP Server 业务扩展实战:从 Echo 到远程命令执行与词典翻译
linux·运维·服务器
样例过了就是过了1 小时前
LeetCode热题100 编辑距离
数据结构·c++·算法·leetcode·动态规划
z200509301 小时前
C++中位图和布隆过滤器的一些面试题
开发语言·c++
剑神一笑2 小时前
Linux awk 命令:文本处理的瑞士军刀
linux·运维·chrome
khalil10202 小时前
代码随想录算法训练营Day-46 动态规划13 | 647. 回文子串、516.最长回文子序列、动态规划总结
数据结构·c++·算法·leetcode·动态规划·回文子串·回文子序列
挨踢ren2 小时前
单例模式:C++实现与多线程安全
c++·设计模式
用户805533698032 小时前
现代Qt开发教程(新手篇)1.14——日志
c++·qt