導讀:越來越多的程序員在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++編程的朋友們有一定的幫助。
推薦閱讀:
獲取知識干貨、增加面試經驗、了解職場人生
歡迎關注微信公眾號