習慣了window的編程環境,習慣了Microsoft VS的方便使用,習慣了IDE的一鍵搞定,轉到Linux環境,頗有些不適用。雖然Linux也有強大的IDE開發環境,如我比較喜歡的Eclipse,但是既然轉到了Linux,就要去學習一下Linux的精華,看到周圍同事的全命令行編程,一個字,酷,但是不能只是乾瞪眼的只是羨慕,還是一個字,學。
(一)學習編輯程序:Vim
如同電腦新手學習打字一般,我開始學習使用Vim。Vim不愧是編輯器裏的戰鬥機,全鍵盤操作給程序編輯帶來了很大的方便。但是Vim的學習曲線比較大(見主流文本編輯器學習曲線),初學者學習起來比較喫力。從插件的安裝配置,vim命令的學習和使用,一步步慢慢熟悉起來,但是對於代碼提示和補全貌似Vim就弱了些,這都是被IDE慣出來的毛病啊。
推薦酷殼網(http://coolshell.cn/)裏面有不少介紹vim的文章
主流文本編輯器學習曲線:http://coolshell.cn/articles/3125.html
遊戲:VIM大冒險 http://coolshell.cn/articles/7166.html
簡明 Vim 練級攻略http://coolshell.cn/articles/5426.html
給程序員的VIM速查卡http://coolshell.cn/articles/5479.html
經典vim插件功能說明、安裝方法和使用方法介紹http://blog.csdn.net/tge7618291/article/details/4216977
(二)gcc/g++
編輯完程序就得學習編譯了,這就要學習GCC了。GCC 的意思也只是 GNU C Compiler 而已。經過了這麼多年的發展,GCC已經不僅僅能支持 C 語言;它現在還支持 Ada 語言、C++ 語言、Java 語言、Objective C 語言、Pascal 語言、COBOL語言,以及支持函數式編程和邏輯編程的 Mercury 語言,等等。而 GCC 也不再單只是 GNU C 語言編譯器的意思了,而是變成了 GNU Compiler Collection 也即是 GNU 編譯器家族的意思了。另一方面,說到 GCC 對於操作系統平臺及硬件平臺支持,概括起來就是一句話:無所不在。
學習GCC主要就是學習gcc命令中的常見選項:
-oFILE 指定輸出文件名,在編譯爲目標代碼時,這一選項不是必須的.如果FILE沒有指定,默認文件名時a.out
-c 只編譯不鏈接
-DFOO=BAR 在命令行定義預處理宏FOO,其值爲BAR
-IDIRNAME 將DIRNAME加入到包含文件的搜索目錄列表中
-LDIRNAME 將DIRNAME加入到庫文件的搜索目錄列表中
-static 鏈接靜態庫,即執行靜態鏈接默認情況下gcc只鏈接共享庫
-shared 生成共享目標文件。通常用在建立共享庫時
-IFOO 鏈接名爲libFOO的函數庫
-g 在可執行程序中包含標準調試信息
-ggdb 在可執行程序中包含只有GNU debugger(gdb)才能識別大量調試信息
-O 優化編譯過的代碼
-OLevel 指定代碼優化的級別爲Level,0<=Level<= 3,如果未指定Level,則默認級別爲1
-ansi 支持ANSI/ISO C的標準語法,取消GNU的語法擴展中與該標準有衝突部分(但這一選項並不能保證生成ANSI兼容的代碼)
-pedantic 允許發出ANSI/ISO C標準所列出的所有警告
-pedantic-errors 允許發出ANSI/ISO C標準所列出的所有錯誤
-traditional 支持Kernighan & Ritchie C 語法 (如用舊式語法定義函數).
-w 關閉所有警告,建議不要使用此項
-Wall 允許發出gcc能提供的所有有用的警告.也可以用-W{warning}來標記指定的警告
-werror 把所有警告轉換爲錯誤,以在警告發生時中止編譯過程
-MM 輸出一個make兼容的相關列表
-v 顯示在編譯過程的每一步中用到的命令
(三)Make/SCons
對於make,我依舊是菜鳥,繼續學習中。誰有好的資料可以推薦下。
陳皓(PS:酷殼博主)寫的《跟我一起寫 Makefile》http://download.csdn.net/detail/xuh5156/4554872
Gnu make 中文手冊 V3.8 http://download.csdn.net/detail/xuh5156/4554898
SCons自稱是make的超級替代品,是用Python寫的,其編譯文件SConstruct也是採用Python編寫,這對於比較熟悉python的人是很方便的。但是目前好像沒有什麼中文的資料,只能去看英文的手冊了。
(四)gdb
簡單的gdb用法
1. breakfunctiona
在functiona函數處設置端點
2. run
讓程序從main入口執行到斷點functiona
3. n
next,單步執行,相當於VC中的調試命令step over
4. s
step into,進入子函數,察看子函數的執行情況
5. bt
backtrace查看堆棧的情況
6. p variant
print出變量variant的值
7. l
list命令,查看當前的行的上下文,默認顯示10行
8. pvariant=correct value
如果發現此時的variant的值不正確,我們可以給variant設置一個正確的值(correct value)
然後,用第10項中的命令繼續執行
9. c
continue 繼續執行,可以是經過按照更改後的值繼續執行。相當於VC中的F5
10. quit orCtrl+C
退出gdb
逐漸的學習下來,一個Linux下的菜鳥也算練得差不多了,還頗有收穫,剩下的就是熟練的應用了。繼續一步步的學習,一步步的深入,期待漸入佳境吧。
再次感謝陳皓及他的酷殼網。