linux下c編程 基礎


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 轉到當前光標所指的局部變量的定義

深入學習參考:

GCC編譯代碼的過程如下:

gcc1

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

gcc2

  • 預處理: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,讓代碼編譯,上述靜態庫和共享庫的使用自動化。

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM