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

相关推荐
leo__5205 分钟前
在Ubuntu中设置开机自动运行(sudo)指令的指南
服务器·ubuntu·postgresql
liujing1023292918 分钟前
Day09_刷题niuke20250609
java·c++·算法
Bardb24 分钟前
02__C++的基本语法
c++·qt
程序员JerrySUN40 分钟前
Linux 内核内存管理子系统全面解析与体系构建
java·linux·运维
rui锐rui1 小时前
大模型模型部署和暴露接口
linux·运维·服务器
孙克旭_1 小时前
day030-Shell自动化编程-函数
linux·运维·自动化
freyazzr1 小时前
C++八股 | Day3 | 智能指针 / 内存管理 / 内存分区 / 内存对齐
开发语言·c++
闻缺陷则喜何志丹1 小时前
【动态规划】B4336 [中山市赛 2023] 永别|普及+
c++·算法·动态规划·洛谷
序属秋秋秋1 小时前
《C++初阶之入门基础》【普通引用 + 常量引用 + 内联函数 + nullptr】
开发语言·c++·笔记
筏.k1 小时前
C++ 网络编程(10) asio处理粘包的简易方式
java·网络·c++