导读:越来越多的程序员在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++编程的朋友们有一定的帮助。

推荐阅读:

一篇文章快速搞懂什么是GitHub

虚拟机安装 Linux 最完整攻略

Vi 和 Vim 的使用

获取知识干货、增加面试经验、了解职场人生

欢迎关注微信公众号

Linux快速搭建C/C++开发环境的更多相关文章

  1. 【转】windows和linux中搭建python集成开发环境IDE

    本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...

  2. 快速搭建 Node.js 开发环境以及加速 npm

    如何快速搭建 node 开发环境 npm 超慢 github 无法打开的问题 于是我觉得应该写一篇文章解答所有这些起步问题,让新同学也能顺顺利利入门. 快速搭建 Node.js 开发环境 如果你想长期 ...

  3. 【转】使用nvm快速搭建 Node.js 开发环境

    原文链接:http://www.cnblogs.com/shuoer/p/7802891.html 快速搭建 Node.js 开发环境 如果你想长期做 node 开发, 或者想快速更新 node 版本 ...

  4. windows和linux中搭建python集成开发环境IDE——如何设置多个python环境

    本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...

  5. LINUX下搭建JAVA的开发环境

    LINUX下搭建JAVA的开发环境 (2009-07-13 10:04:13)     下面就将Linux下JAVA开发环境的搭建详细道来: 1.Linux下JDK的安装 至于下载JDK的二进制可执行 ...

  6. 使用 Laragon 在 Windows 中快速搭建 Laravel 本地开发环境 (转)

    laravel学院 简介 对于那些使用 Windows 操作系统的同学来说,Homestead 和 LaraDock 虽说支持 Windows 系统,但是对初学者来说,安装配置起来还是有一定复杂度的, ...

  7. Linux 服务器快速搭建 Java Web 开发环境

    搭建 Java 环境 yum list java* yum install java-1.8.0-openjdk.x86_64 -y java -version mkdir 创建文件夹 mv 修改文件 ...

  8. 如何在Linux快速搭建一套ADB环境

    一.ADB简介 1.什么是ADB Android Debug Bridge,安卓调试桥,它借助adb.exe(Android SDK安装目录platform-tools下),用于电脑端与模拟器或者真实 ...

  9. 快速搭建一个vue开发环境

    常规的搭建就是从npm到vue到webpack这样一个一个的来,这样一套下来说不上复杂但是也不简单.之前公司的vue后台项目 我还是写的轻车熟路的,因为前端同事已经把架子搭好了,环境配置的丝般顺滑,你 ...

随机推荐

  1. CSS定位布局

    CSS定位布局 基础知识 在CSS布局中,定位布局也是一种非常常见的技术手段,我们以京东为例: 上面是非常好的例子,对于定位布局来说它可以将一个元素放在页面上的任意一个位置. 但是定位布局也不能滥用, ...

  2. 用Python把20年的GDP、人口以及房价数据进行了可视化

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:CDA数据分析师 提到一线城市,大家马上会想到北上广深这四个超级大都 ...

  3. MySQL数据库---数据库备份、视图、触发器、事物、存储过程、函数和索引

    备份 方法: 使用mysqldump实现逻辑备份 语法: mysqldump -h 服务器 -u用户名 -p密码 数据库名 > 备份文件.sql 单库备份: mysqldump -uroot - ...

  4. vue中引入jq的步骤--以及注意事项

  5. java8之Stream流处理

    简介 Stream 流处理,首先要澄清的是 java8 中的 Stream 与 I/O 流 InputStream 和 OutputStream 是完全不同的概念. Stream 机制是针对集合迭代器 ...

  6. 主机无法访问虚拟机中运行的Django项目

    在虚拟机中的linux上运行了Django项目,虚拟机中可以访问,但外部主机无法访问(连接超时),但主机能ping同虚拟机,虚拟机也能ping通主机 需检查三个地方:(后面发现虚拟机的ip地址存在改变 ...

  7. spring学习(二)spring容器搭建与应用

    本文只是对spring容器进行操作 最简单的一个案例: 一.导包 使用IDEA的maven工程 1.在pom.xml中导入依赖 <?xml version="1.0" enc ...

  8. CSS3多栏布局

    CSS3多栏布局 分栏数: column-count:auto|num: auto为默认值,表示元素只有一列.num取值为大于0的整数 每栏宽度: column-width:auto|<leng ...

  9. python学习之路------你想要的都在这里了

    python学习之路------你想要的都在这里了 (根据自己的学习进度后期不断更新哟!!!) 一.python基础 1.python基础--python基本知识.七大数据类型等 2.python基础 ...

  10. 使用types库修改函数

    import types class ppp: pass p = ppp()#p为ppp类实例对象 def run(self): print("run函数") r = types. ...