Linux快速搭建C/C++开发环境

导读:越来越多的程序员在Linux下进行C/C++的开发。本文以CentOS 7为例,教你快速搭建一个vi + gcc/g++ + Make + valgrind的开发环境。
本文字数:1500,阅读时长大约:10分钟
一、YUM源配置
本文假设你已经安装好了一个 Linux 操作系统,关于如何安装 Linux,可以参考《虚拟机安装 Linux 最完整攻略》
下载阿里的YUM源:
https://mirrors.aliyun.com/repo/

将/etc/yum.repos.d 目录下所有.repo文件都删除,然后把刚才下载的阿里源配置文件保存到该目录下。
二、安装gcc/g++
运行安装命令
yum install -y gcc gcc-c++
安装成功后,试一下gcc和g++是否安装成功
三、安装Git
通过Git我们可以下载安装很多开源的软件。关于Git是什么,可以参考我之前的文章《一篇文章快速搞懂什么是GitHub》,这里不再过多介绍。
运行安装命令
yum install -y git
四、安装Vim
(1)安装 Vim
运行安装命令
yum install -y vim
(2)创建配置文件
在默认目录下创建文件 ~/.vimrc,保存以下内容

显示行号:set number
打开语法高亮:syntax on
Tab 大小:set tabstop=4
缩进大小:set shiftwidth=4
保存成功后,试着用Vim写一段代码,发现已经可以显示行号、语法高亮提示、并且tab缩进改为4个空格了。

(3)安装 Vundle
Vundle是Vim bundle的缩写,是一个Vim插件的管理器。通过Vundle我们可以安装很多有用的插件。具体可以查阅一下GitHub上的信息:
https://github.com/VundleVim/Vundle.vim#about
运行下面的命令下载Vundle
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
将下面的内容追加到~/.vimrc中
set nocompatible
filetype off
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'
call vundle#end()
filetype plugin indent on

启动Vim,运行命令:
:PluginInstall
这样Vundle就安装成功了。
(4)设置括号、引号匹配
目前左右两个花括号或者圆括号还都需要你手动输入,如果我们想
输入左括号补全右括号
输入左引号自动补全右引号
那么我们需要用Vundle来安装一个delimitMate插件。
在.vimrc文件中添加一行 Plugin 'Raimondi/delimitMate'

然后启动Vim再次运行 :PluginInstall 命令。写入一段代码,看一看括号和引号的自动匹配功能是不是已经实现了。
(5)自动补全
自动补全是代码编辑器中最重要的特性,当前Vim用的比较多的插件有YCM(YouCompleteMe)和Coc。具体的安装步骤可以参见GitHub上的说明:
YCM: https://github.com/ycm-core/YouCompleteMe
Coc: https://github.com/neoclide/coc.nvim
五、编写Makefile
Makefile非常重要,它定义了一系列规则,哪些文件需要编译,编译的顺序,以及文件之间的依赖关系。会不会写Makefile反映了一个程序员是否具备完成大型项目的能力。我下面写一个简单的Makefile,假如我们有以下几个文件:
Cat.cpp, Cat.h:定义了Cat类
test.cpp:包含了main()函数,并且使用了Cat类
于是我们创建一个Makefile,内容如下。

注意每个命令行前需要是一个tab,不能有其他的空格,所以我们手动把Vim的tabstop改为8。
每一段的第一行表示文件的依赖关系,第二行表示使用到的命令。比如test文件是由Cat.o和test.o文件生成的;生成的命令是
g++ -Wall Cat.o test.o -o test
最后一段clean,表示清空目标文件所使用的命令。
Makefile编写好以后,编译项目只需要使用make命令,清空目标文件可以使用 make clean 命令:

六、使用Valgrind检测内存泄漏
C/C++程序需要检测是否有内存泄漏。Linux下最常用的一个工具是Valgrind。
首先安装:
yum install -y valgrind
然后编写一段有内存泄露的代码来测试一下,
test.c

使用gcc,编译,注意要使用 -g -Og 选项来帮助Valgrind调试
gcc -g -Og -std=c99 test.c -o test
然后使用Valgrind 命令来检测内存泄漏:
valgrind --leak-check=full ./test
得到如下结果,可以看出有明显的内存泄漏,并且是有test.c中第五行代码引起的。

我们将代码做一下修改,将动态分配的内存释放掉:

重新编译,并再次运行valgrind命令检测,得到结果如下:

可以看到这次再没有内存泄漏了。
七、总结
本文演示了在CentOS环境下,如何利用YUM、Git、Vundle等工具搭建 Vim + gcc/g++ + Make + valgrind的开发环境,希望对于在Linux下用C/C++编程的朋友们有一定的帮助。
推荐阅读:
获取知识干货、增加面试经验、了解职场人生
欢迎关注微信公众号

Linux快速搭建C/C++开发环境的更多相关文章
- 【转】windows和linux中搭建python集成开发环境IDE
本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...
- 快速搭建 Node.js 开发环境以及加速 npm
如何快速搭建 node 开发环境 npm 超慢 github 无法打开的问题 于是我觉得应该写一篇文章解答所有这些起步问题,让新同学也能顺顺利利入门. 快速搭建 Node.js 开发环境 如果你想长期 ...
- 【转】使用nvm快速搭建 Node.js 开发环境
原文链接:http://www.cnblogs.com/shuoer/p/7802891.html 快速搭建 Node.js 开发环境 如果你想长期做 node 开发, 或者想快速更新 node 版本 ...
- windows和linux中搭建python集成开发环境IDE——如何设置多个python环境
本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...
- LINUX下搭建JAVA的开发环境
LINUX下搭建JAVA的开发环境 (2009-07-13 10:04:13) 下面就将Linux下JAVA开发环境的搭建详细道来: 1.Linux下JDK的安装 至于下载JDK的二进制可执行 ...
- 使用 Laragon 在 Windows 中快速搭建 Laravel 本地开发环境 (转)
laravel学院 简介 对于那些使用 Windows 操作系统的同学来说,Homestead 和 LaraDock 虽说支持 Windows 系统,但是对初学者来说,安装配置起来还是有一定复杂度的, ...
- Linux 服务器快速搭建 Java Web 开发环境
搭建 Java 环境 yum list java* yum install java-1.8.0-openjdk.x86_64 -y java -version mkdir 创建文件夹 mv 修改文件 ...
- 如何在Linux快速搭建一套ADB环境
一.ADB简介 1.什么是ADB Android Debug Bridge,安卓调试桥,它借助adb.exe(Android SDK安装目录platform-tools下),用于电脑端与模拟器或者真实 ...
- 快速搭建一个vue开发环境
常规的搭建就是从npm到vue到webpack这样一个一个的来,这样一套下来说不上复杂但是也不简单.之前公司的vue后台项目 我还是写的轻车熟路的,因为前端同事已经把架子搭好了,环境配置的丝般顺滑,你 ...
随机推荐
- Linux 通过源代码安装和编译程序
Linux源代码安装在平常工作学习中经常用到,总结下步骤↓↓↓ 第一步:#mount /dev/cdrom/mnt (挂载一个软盘) 第二步:手动安装httpd-2.4.25.tar.gz 依赖关系包 ...
- Unity3D Demo项目开发记录
前言 经过一段时间的学习与实际开发,unity3D也勉强算是强行入门了,正所谓好记性不如烂笔头,更何况本人并非专业从事unity3D开发,会一点C#但也并不熟悉,为了避免后期遗忘,因此特意整理了一个D ...
- 深入理解JVM内存回收机制(不包含垃圾收集器)
目录 垃圾回收发生的区域 如何判断对象是否可以被回收 HotSpot实现 垃圾回收算法 JVM中使用的垃圾收集算法 GC的分类 总结 参考资料 垃圾回收发生的区域 堆是java创建对象的区域(Stri ...
- C#数据结构与算法系列(二十二):快速排序算法(QuickSort)
1.介绍 快速排序(QuickSort)是对冒泡排序的一种改进,基本思想是:通过一趟排序将要排序的数据分割成独立的两部分, 其中一部分的所有数据都比另一部分的所有数据都要小,然后再按此方法对这两部分数 ...
- P5198 [USACO19JAN]Icy Perimeter S (洛谷) (水搜索)
同样是因为洛谷作业不会写…… 写(水)博客啦. 直接放题目吧,感觉放在代码框里好看点 Farmer John要开始他的冰激凌生意了!他制造了一台可以生产冰激凌球的机器,然而不幸的是形状不太规则,所以他 ...
- Lucas定理 & Catalan Number & 中国剩余定理(CRT)
又双叒叕来水数论了 今天来学习\(Lucas \:\ \& \:\ Catalan Number\) 两者有着密切的联系(当然还有CRT),所以放在一起学习一下 \(Lucas\) 定义\(\ ...
- ElementUI中 el-table-column 显示的数据为多个返回数据的拼接
遇到个问题就是其中有个要展示的数据来自接口返回的两个字段. 原用法是: 原以为prop=" "中只能放一个字段的数据,想放两个字段数据的话,要把 <el-table-colu ...
- 题解 洛谷 P4602 【[CTSC2018]混合果汁】
注意到问题具有单调性,所以一个询问可以通过二分答案来解决. 对于多组询问,就采用整体二分来处理. 将果汁按\(d\)从大到小排序,二分出一个位置\(mid\),只考虑在位置\(mid\)之前的果汁,其 ...
- Qt-操作xml文件
1 简介 参考视频:https://www.bilibili.com/video/BV1XW411x7AB?p=12 xml简介:可扩展标记语言,标准通用标记语言的子集,简称XML.是一种用于标记电 ...
- 使用matlab进行傅里叶分析和滤波
傅里叶分析 公式法 下例 是将振幅为1的5Hz正弦波和振幅为0.5的10Hz正弦波相加之后进行傅里叶分析. clear all N=512; dt=0.02; n=0:N-1; t=n*dt; x=s ...