导读:越来越多的程序员在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. 用PyInstaller打包用PyQt5编写的python程序

    0.背景 本弱初学PyQt5,写了一个GUI小程序,但在用PyInstaller打包时出现了不少问题,现将几个比较大的问题记录如下,希望以后能记住. 1. 资源打包 首先是资源打包的问题,我写的程序引 ...

  2. Ant-Design-Vue中关于Form组件的使用

    1.创建form表单的两种方式,不同的方式在js中创建表单的方式也不同 方式1:一般使用在搜索表单中,只需要双向绑定数据即可,那就使用这种方法即可 <template> <a-for ...

  3. Ethical Hacking - NETWORK PENETRATION TESTING(11)

    Securing your Network From the Above Attacks. Now that we know how to test the security of all known ...

  4. 题解 CF1354D 【Multiset】

    考试拿到题,一看,这不是权值线段树吗? 思路 使用线段树每个节点维护该区间内元素出现次数. 根据题目,对于加入.删除元素,我们可以单点修改(\(+1\).\(-1\)),对于输出,我们可 随便 遍历找 ...

  5. 微信小程序反编译~2020年

    目录 摘要 介绍 安装反编译脚本 使用 获取wxapkg文件 反编译 结论 参考资料 摘要 安装wxappUnpacker小程序反编译工具并使用(2020.03) 关键词: 微信小程序反编译 wxss ...

  6. Pollard-Rho

    \(code:\) ll pri[12]={2,3,5,7,11,13,17,19}; ll mul(ll x,ll y,ll mod) { ll c=(long double)x*y/mod+0.5 ...

  7. CSS帧动画

    CSS帧动画 基础知识 通过定义一段动画中的关键点.关键状态来创建动画.@Keyframes相比transition对动画过程和细节有更强的控制. 过渡动画是两个状态间的变化,帧动画可以处理动画过程中 ...

  8. MySQL之表关系与范式

    关系: 所有的关系都是指表与表之间的关系. 将实体与实体的关系,反应到最终数据库表的设计上来,可以将关系分成三种:一对一,一对多(多对一)和多对多. 一对一: 一张表的一条记录一定只能与另外一张表的记 ...

  9. 【CVPR2020】Wavelet Integrated CNNs for Noise-Robust Image Classification

    深度学习中的下采样(max-pooing, average-pooling, strided-convolution)通常会有两个不足:破坏了目标的基本结构.放大随机噪声.上采样操作同样容易受到影响. ...

  10. 谁来教我渗透测试——VMware工具安装和使用

    今天我们继续渗透测试学习系列了,昨天我们看了基础概念,今天我们来学习一下渗透测试必备的功能VMware安装. 首先我们下载好VMware workstation Pro的安装包.可以在百度上直接百度下 ...