1. 熟悉Linux系統下的開發環境
2. 熟悉vi的基本操作
3. 熟悉gcc編譯器的基本原理
4. 熟練使用gcc編譯器的常用選項
5 .熟練使用gdb調試技術
6. 熟悉makefile基本原理及語法規范
7. 掌握靜態庫和動態庫的生成
一:Vim
1.使用vim命令進入vim界面
$ vim practice_1.txt 或 $ vim
2.游標移動
| 按鍵 | 說明 |
|---|---|
h |
左 |
l |
右(小寫L) |
j |
下 |
k |
上 |
w |
移動到下一個單詞 |
b |
移動到上一個單詞 |
3.進入插入模式
| 命令 | 說明 |
|---|---|
i |
在當前光標處進行編輯 |
I |
在行首插入 |
A |
在行末插入 |
a |
在光標后插入編輯 |
o |
在當前行后插入一個新行 |
O |
在當前行前插入一個新行 |
cw |
替換從光標所在位置后到一個單詞結尾的字符 |
4.命令行模式下保存文檔
從普通模式輸入:進入命令行模式,輸入w回車,保存文檔。輸入:w 文件名可以將文檔另存為其他文件名或存到其它路徑下
5.退出vim
1.命令行模式下退出vim
從普通模式輸入:進入命令行模式,輸入wq回車,保存並退出編輯
以下為其它幾種退出方式:
| 命令 | 說明 |
|---|---|
:q! |
強制退出,不保存 |
:q |
退出 |
:wq! |
強制保存並退出 |
:w <文件路徑> |
另存為 |
:saveas 文件路徑 |
另存為 |
:x |
保存並退出 |
:wq |
保存並退出 |
2.普通模式下退出vim
普通模式下輸入Shift+zz即可保存退出vim
練習截圖:
一:




二:使用vim 輸入以下代碼,聯系使用“K”查找幫助文檔:


自己對於K的用法還是很不熟悉。
三:練習gcc編譯運行代碼
gcc分為4個步驟:
預處理:
gcc -E hello.c -o hello.i
編譯:
gcc -S hello.i -o hello.s
匯編:
gcc -c hello.s -o hello.o
鏈接:
一:靜態鏈接
ar rcsv lipow.a unsgn_pow.o
gcc -o pow_test.c -L.-lpow
./pow_test 2 10
二:動態鏈接
gcc -fPIC -Wall -c unsgn_pow.c
gcc -shared -o libpow.so unsgn_pow.o
gcc -o pow_test pow_test.c -L. -lpow
經過反復的查找自己的錯誤,不斷地改正,終於用gcc成功編譯



四:練習gdb調試代碼

程序員有幾個鍵提示一下:
- 大寫“K”可以用來查找函數的幫助信息:查看 man page,命令模式下,將光標放在函數名上,按"K"可以直接察看 man page。
- 幾個設置
:set nu 顯示行號
:set ai 自動縮行
:set ts=4 設置一個 TAB 鍵等於幾個空格
- 移動光標
[[ 轉到上一個位於第一列的"{"
]] 轉到下一個位於第一列的"{"
{ 轉到上一個空行
} 轉到下一個空行
gd 轉到當前光標所指的局部變量的定義
深入學習參考:
- 簡明 Vim 練級攻略
- 七個高效的文本編輯習慣(以Vim為例)(視頻)
- 所需即所獲:像 IDE 一樣使用 vim
- VIM教程與學習資料匯總
3. gcc
GNU CC(簡稱為gcc)是GNU項目中符合ANSI C標准的編譯系統,能夠編譯用C、C++和Object C等語言編寫的程序。gcc又是一個交叉平台編譯器,它能夠在當前CPU平台上為多種不同體系結構的硬件平台開發軟件,因此尤其適合在嵌入式領域的開發編譯。
GCC編譯代碼的過程如下:

我們可以把編譯過程分成四步,以編譯hello.c生成可執行文件hello為例,如下圖:

- 預處理:gcc –E hello.c –o hello.i;gcc –E調用cpp
- 編 譯:gcc –S hello.i –o hello.s;gcc –S調用ccl
- 匯 編:gcc –c hello.s –o hello.o;gcc -c 調用as
- 鏈 接:gcc hello.o –o hello ;gcc -o 調用ld
編譯過程比較難記,我們簡化一下,前三步,GCC的參數連起來是“ESc”,相應輸入的文件的后綴是“iso”,這樣記憶起來就容易多了。
學習GCC的另外一個重點是:參考教材《深入理解計算機系統》 7.6,7.10節,學習靜態庫,動態庫的制作。
4. gdb
建議使用CGDB,比GDB好用,熟悉VC的調試方式,可以使用DDD。 注意使用GCC編譯時要加“-g”參數。 參考gdb參考卡GDB最基本的命令有:
- gdb programm(啟動GDB)
- b 設斷點(要會設4種斷點:行斷點、函數斷點、條件斷點、臨時斷點)
- run 開始運行程序
- bt 打印函數調用堆棧
- p 查看變量值
- c 從當前斷點繼續運行到下一個斷點
- n 單步運行
- s 單步運行
- quit 退出GDB
問題:GDB的n(next)命令讓GDB執行下一行,然后暫停。 s(step)命令的作用與此類似,只是在函數調用時step命令會進入函數,那么實際使用中應該優先選用哪個?為什么?
其他幾個我認為應該掌握的調試命令有:
- display 跟蹤變量值的改變
- until 跳出循環
- finish 跳出函數
- help 幫助
學習參考:
5. make與makefile
Linux下C語言編程基礎
1.練習vimtutuor至少一遍;







2.使用vim 輸入以下代碼,聯系使用“K”查找幫助文檔: 
3.練習gcc編譯運行代碼;


4.練習gdb調試代碼;
5.把上述代碼中除了main函數外的代碼制作成一個靜態庫math.a和一個共享庫math.so;
6.編寫makefile,讓代碼編譯,上述靜態庫和共享庫的使用自動化。
