Centos7 打造 C/C++ 开发环境

工作后公司的开发环境都是 Centos7,自带的一些软件都非常老,摸索了很久,总算是搭建了一个相对较为舒适的开发环境,下面介绍一下搭建过程。

GCC 版本问题

Centos7 使用 yum 安装的 GCC 版本是 4.8.5,蛮老的版本了,现在稍微新一点的库都要求 GCC5 以上,但是重新编译安装最新的GCC又特别麻烦,而且不能在各个版本的 GCC 之间来回切换,不够灵活,刚好有一个叫做 SCL 的软件库可以提供不同版本 GCC 的灵活切换,可以完美解决我们的需求,安装十分简单:

sudo yum install centos-release-scl scl-utils-build

安装完成以后,假如我们要使用 GCC7,那么可以使用如下命令:

yum search devtoolset # 搜索 GCC
sudo yum install devtoolset-7-gcc.x86_64 # 安装 GCC7
scl enable devtoolset-7 # 启用 GCC7

通过 SCL 安装的 GCC 放在 /opt/rh 目录下,我们可以发现之前启用 GCC7 的 enable 实际上是安装目录下的一个脚本,所以假如你想把 GCC7 当作是你的默认 GCC,那么可以修改你的 SHELL 配置文件,比如我用的是 zsh,则可以在 .zshrc 中加上 source /opt/rh/devtoolset-7/enable

Git 代理

Centos7 自带的 Git 很老了,当你要使用 VSCode 的时候,类似 GitLens 之类的插件就不满足要求了,所以需要升级,可以使用如下两种方法:

升级完成后可以参考我的另一篇文章设置Git的代理,加快从 Github clone 的速度。
tips: FastGithub,你懂的

LLVM 编译安装

为了用 VSCode 写 C/C++ 代码更加丝滑,最好先安装 LLVM ,里面的额 clang-format、clangd 等可以大幅度的提高我们写代码的体验,编译 LLVM 需要依赖一大堆东西,这里我也懒得搞高版本的 GCC 了,因此使用了兼容 GCC4.8 的 LLVM9 ,这样即使你没有使用 SCL 安装高版本 GCC 也可以编译安装 LLVM,下面开始将具体的编译安装步骤:

1. 下载源码
git clone https://github.com/llvm/llvm-project.git
cd llvm-project
git checkout remotes/origin/release/9.x
# 安装一些依赖
sudo yum install ncurses-devel.x86_64 libedit.x86_64 libedit-devel.x86_64 libxml2 swig
2. 安装 Z3

在编译 LLVM 前还需要安装它的依赖 Z3,其他依赖可以更据提示自行使用 yum 安装

git clone https://github.com/Z3Prover/z3.git
cd z3
git checkout z3-4.7.1
python scripts/mk_make.py
cd build
make
sudo make install
3. 编译安装
cmake -S llvm -B build -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS="clang;lldb;clang-tools-extra"  
-DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=true -G "Unix Makefiles"
cmake --build build -j${nproc}
cd build
sudo make install

这里 DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN 表示允许使用老版 GCC 工具链,DLLVM_ENABLE_PROJECTS 是要编译的 llvm 项目,你也可以自己加上你想编译的 project。
最后使用 clang -v 验证是否安装成功

Bear 编译安装

最新版本的 Bear 要求 C++17,而且还有类似 gRPC 的依赖,装起来太麻烦了,所以这里选择了老一点的 2.4.4 编译安装:

pip install lit # Bear 依赖
git clone https://github.com/rizsotto/Bear.git
cd Bear
git checkout 2.4.4
cd ..
mkdir build
cd build
cmake ../Bear
make all
make check
sudo make install

使用 VSCode 阅读调试代码

微软官方提供的 C/C++ 插件调试还是可以的,但是在代码跳转上就有点拉了胯了,我工作中 dpdk 用的多一点,dpdk 里的一些结构体用微软的插件就没办法直接鼠标放上去进行预览,单用 clangd 就没这个问题,因此接下来使用 clangd 来提供代码的提示导航等功能,使用微软的插件调试代码。

1. VSCode 安装

首先请参考之前的文章 VS Code 配合 WSL 搭建 C/C++ 开发环境 装好 VSCode ,然后装好 Remote SSh 插件方便远程开发。

2. C/C++ 代码阅读编辑环境

接下来利用之前安装的工具实现相对完美的代码阅读环境,通常你使用 VSCode 打开一个C/C++ 项目,想要跳转到一个自定义的结构体,要在项目目录下的 c_cpp_properties.json 中的 includePath 里手动添加头文件的路径,实在是太麻烦了,而且我发现微软官方的 C/C++ 插件经常回有无法跳转的情况出现,不是特别的好用,因此这里使用 clangd 来提升我们代码阅读和编辑的体验。
clangd 在之前安装 LLVM 的时候已经装好了,接下来需要安装 clangd 插件:
在这里插入图片描述

项目设置:为了理解你的项目结构,clangd 依赖一个名为compile_commands.json的文件,该文件对于使用不同构建工具的项目需要使用不同的工具来生成,比如使用 Makefile 的项目就可以使用 Bear;
Bear 使用实例:

make clean
bear make -j${nproc}
# 这里 bear 会把 make 编译过程中的各种依赖记录到 compile_commands.json 中

到了这一步,你已经可以使用 VSCode 优雅的阅读编辑 C/C++ 代码了;
除了 Makefile ,主流的构建工具还有 Cmake、Bazel、meson 等等,可以参考 clangd 的 官方文档
tips:bear 后面跟着的实际上是你的编译命令,所以 bear ninjabear gmake all 这些都是可以的

3. 使用 VSCode 调试代码

VSCode 的代码调试功能已经十分强大,基本的使用请参考微软的官方文档
我主要讲一下配置文件中一些常用配置项的含义还有一些小坑

名字含义
tasks.json任务配置文件,比如你希望每次调试之前先重新编译一下项目就可以在这里配置这样一个清理并编译项目的任务
launch.json调试项目用的配置文件
program要调试的可执行文件所在地址,如: “program”: “${workspaceFolder}/src/test”,test 是可执行文件
args程序的运行参数,每一个参数使用冒号包住,参数间使用逗号分隔,如:“args”: ["–","–no-pci","–vdev=‘net_tap0’,mac=fixed",],
cwd工作目录
setupCommandsgdb 的一些命令
preLaunchTask调试之前要执行的任务,和 tasks.json 有关
miDebuggerPathgdb 路径

:程序需要 sudo 执行
解决:在 home 目录或者其他地方建一个名为 sgdb 的文件,内容为

sudo /usr/bin/gdb "$@"

然后 sudo chmod 777 sgdb 将其改为可执行文件,然后将 miDebuggerPath 的路径改为 sgdb 的地址,到这一步还有一个问题,sudo 的时候需要输入密码,所以需要在/etc/sudoers 中加上一行:

user_name ALL=(ALL)       NOPASSWD: ALL

然后就可以愉快的用 VSCode 调试代码啦~
这部分参考 how-to-debug-programs-with-sudo-in-vscode

其他好用工具

  • btop
  • exa
  • bat
  • procs
  • vnote
  • mcfly

这里主要参考了阮一峰的文章Modern Unix 这个项目

  • 12
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
配置CentOS 7上的VSCode C开发环境非常简单。下面是一些步骤: 1. 安装VSCode:首先,从VSCode官方网站下载适用于LinuxVSCode安装程序包(`.rpm`文件)。通过终端进入下载目录,然后使用以下命令安装: ``` sudo yum install ./<vscode.rpm> ``` 2. 安装C/C++扩展:打开VSCode,点击左侧的扩展图标(即四个方块组成的图标),在搜索栏中输入"C/C++",找到C/C++扩展并点击安装。 3. 安装GCC:GCC是C语言的编译器,CentOS默认不包含GCC。通过以下命令安装GCC: ``` sudo yum install gcc ``` 4. 创建C项目文件夹:在终端中进入项目的父文件夹,并使用以下命令创建一个新的C项目文件夹: ``` mkdir <project_folder> ``` 5. 在VSCode中打开项目文件夹:在VSCode中点击"文件"->"打开文件夹",选择步骤4中创建的C项目文件夹。 6. 创建C文件:在VSCode中使用"文件"->"新建文件",然后将文件保存为`.c`扩展名(例如`main.c`)。在文件中编写C代码。 7. 编译和运行:在终端中使用以下命令编译和运行C代码: ``` gcc -o <output_file> <input_file.c> ./<output_file> ``` 8. 调试:添加断点并进行调试是C开发的重要环节。在VSCode中,点击"调试"->"添加配置",选择"GDB: Launch"。然后在`.vscode/launch.json`文件中可以配置调试设置。 通过按照上述步骤,您就可以在CentOS 7上配置VSCode C开发环境,并开始编写、编译和调试C代码了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

thewangcj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值