初學linux c++編程

習慣了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下的菜鳥也算練得差不多了,還頗有收穫,剩下的就是熟練的應用了。繼續一步步的學習,一步步的深入,期待漸入佳境吧。

再次感謝陳皓及他的酷殼網。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章