Ubuntu c/c++ 開發環境
在Ubuntu下搭建C/C++編程環境,綜合起來說就是vim+gcc+gdb
。其中vim用於文本編輯,gcc用於程序編譯,gdb用於代碼調試。
在Terminal中執行sudo apt-get install build-essential,即可安裝必要的庫函數。
文本編輯
Ubuntu自帶的為vi編輯器,vim是vi的升級版,兼容vi。
1、安裝
sudo apt-get install vim
2、常用指令
vim有三種模式
1.普通模式
當vim打開的時候就直接進入普通模式,在普通模式下可以執行刪除、復制等指令
a , o ,i
2.插入模式
插入模式可以編輯文本
Esc 鍵進入普通模式
3.命令模式
普通模式輸入“:”(冒號)進入命令模式,此時在文本界面最下面一行可以輸入相關命令,可以設置文本的保存退出方式等
普通模式常用下指令
i
→ Insert 模式,按ESC
回到 Normal 模式.x
→ 刪當前光標所在的一個字符。:wq
→ 存盤 + 退出 (:w
存盤,:q
退出) (陳皓注::w 后可以跟文件名)dd
→ 刪除當前行,並把刪除的行存到剪貼板里p
→ 粘貼剪貼板hjkl
(強例推薦使用其移動光標,但不必需) →你也可以使用光標鍵 (←↓↑→). 注:j
就像下箭頭。:help <command>
→ 顯示相關命令的幫助。你也可以就輸入:help
而不跟命令。(陳皓注:退出幫助需要輸入:q)
有幾張不同角度的cheat sheet,參考鏈接https://blog.csdn.net/weixin_35477207/article/details/78165411
vim學習連接:
https://coolshell.cn/articles/5426.html
https://blog.csdn.net/lsacaner/article/details/92800900
3.插件安裝
對於Windows上做C++開發的用戶來說,vs為他們做了大量的工作,語法高亮、自動縮進、智能提示等等,當你happy的使用vs時,請記住一點,這是一個收費軟件,雖然在我大中華普遍都在使用微軟的盜版軟件,但作為程序員我們心里應該知道這是不對的行為,然后再去——等等,我們今天討論的不是這個話題,我們要說的是Linux下的免費軟件Vim!
我將本文需要安裝的插件和配置文件都放在了github上,如果你不想大費周折的了解每個插件的安裝方式,可以直接下載所有插件即可使用,項目地址https://github.com/handy1989/vim,可以按照如下命令備份並一次安裝所有插件(注意,從git上下載的vim目錄下都是隱藏文件,ls -a
可以查看)
-
git clone https://github.com/handy1989/vim.git
-
mv vim /.vimrc ~/
-
mv vim /.vim ~/
-
sudo apt-get install ctags
原文鏈接:https://www.linuxidc.com/Linux/2016-06/132262.htm
代碼編譯
GCC(GNU Compiler Collection)是一組編譯工具的總稱,支持多平台、多語言源文件到可執行文件的編譯與生成。其中也包括gcc(C編譯器)和g++(C++編譯器)。
編譯單個文件為可執行文件:
g++ -Wall -W hello.cpp -o hello
編譯多個文件為可執行文件:
g++ -Wall -W main.cpp hello_fun.cpp -o newhello
預處理
可以用gcc選項定義宏,-DNAME會定義一個名為NAME的宏。如g++ -Wall -DTEST dtest.cpp
,定義了名為TEST的宏。定義的宏會對代碼產生影響。
也可以為宏定義值,-DNAME=VALUE。如g++ -Wall -DNUM=100 dtestval.cpp
,g++ -Wall -DNUM="2+2" dtestval.cpp
,g++ -Wall -DMESSAGE="\"Hello,World!\"" dteststr.cpp
。在代碼中把宏用括號括起來是好習慣。
makefile文件
對於較大的工程,如果還像前文一樣寫命令行就太痛苦了。而使用makefile可以管理整個工程的編譯規則,之后用一個make命令就可自動編譯,相對方便很多。
makefile文件名應為Makefile
或makefile
使用CMake自動生成makefile
當處理較大型的項目時,手動書寫makefile就比較痛苦,這時用來用來自動化自動化工具makefile的自動化工具就是CMake。不過天下哪有那么便宜的事,它也是要寫自己的CMakeLists.txt的。
推薦書籍《CMake實踐》《Mastering CMake》和官網幫助。
CMake是一個跨平台的自動化建構系統,它是用一個名為CMakeLists.txt的文件來描述構建過程,可以產生標准的構建文件,如Unix的makefile或Windows Visual Studio的projects/workspaces。
文件CMakeLists.txt需要手工編寫,也可以通過編寫腳本進行半自動的生成。
在Linux平台下使用CMake生成makefile並編譯的流程如下:
- 安裝CMake。在Ubuntu上安裝cmake很簡單
$sudo apt-get install cmake
。如果想要其Qt圖形界面另需安裝sudo apt-get install cmake-qt-gui
。一般不需要,在Ubuntu系統上用ccmake就可以了。 - 編寫CMakeLists.txt。
- 運行CMake。用
cd
將當前目錄設為生成目標目錄,執行命令ccmake srcdir
(文字界面)或cmake -i
(交互命令行),如果想使用Qt圖形界面使用cmake-gui
。 - Makefile已經生成。使用make命令進行編譯。
- 如果想清理工程。使用
make clean
。
cmke學習參考:https://www.cnblogs.com/wainiwann/p/6497791.html
代碼調試
gdb
gdb是一個用來調試C和C++程序的功能強大的調試器,能在程序運行時觀察程序的內部結構和內存使用情況。
gdb主要提供以下功能:
- 監視程序中變量的值的變化。
- 設置斷點,使程序在指定的代碼行上暫停執行,便於觀察。
- 單步執行代碼。
- 分析崩潰程序產生的core文件。
為使gdb能正常工作,必須在程序編譯時包含調試信息。即-g
選項。
簡單的調試步驟示例
- 載入test可執行文件
gdb test
- 運行
run
。 - 查看程序出錯的地方
where
。 - 查看出錯函數附近的代碼
list
。 - 打開堆棧
backtrace
。 - 單步調節
next
或step
。 - 查看可疑表達式值
print var
。 - 在可疑行打斷點
break 8
。 - 重新運行會在斷點處停止。用
set variable
修改變量值。 - 繼續運行
continue
。看結果是否正確。 - 退出gdb
quit
。
CMakeList.txt 文件修改
修改CMakeList.txt 加入
-
SET( CMAKE_BUILD_TYPE "Debug")
-
SET( CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb")
-
SET( CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")
原因是CMake 中有一個變量 CMAKE_BUILD_TYPE ,可以的取值是 Debug Release RelWithDebInfo >和 MinSizeRel。
當這個變量值為 Debug 的時候,CMake 會使用變量 CMAKE_CXX_FLAGS_DEBUG 和 CMAKE_C_FLAGS_DEBUG 中的字符串作為編譯選項生成 Makefile;
重新編譯
cmake -DCMAKE_BUILD_TYPE=Debug Path
參考鏈接:https://blog.csdn.net/gdp12315_gu/article/details/45063479
程序參數輸入
gdb調試時,程序路徑后跟的參數為gdb的參數,程序的參數需在運行時輸入:
-
gdb test
-
run par1 par2
gdb學習鏈接:
https://www.cnblogs.com/life2refuel/p/5396538.html
http://blog.sina.com.cn/s/blog_a573f7990101k58w.html
參考文獻:
https://www.cnblogs.com/BlueMountain-HaggenDazs/p/6426465.html
https://blog.csdn.net/weixin_35477207/article/details/78165411