Linux下C語言編程基礎


Linux下C語言編程基礎

一、目的

  1. 熟悉Linux系統下的C開發環境
  2. 熟悉vi的基本操作
  3. 熟悉gcc編譯器的基本原理
  4. 熟練使用gcc編譯器的常用選項
  5. 熟練使用gdb調試技術
  6. 熟悉makefile基本原理及語法規范
  7. 掌握靜態庫和動態庫的生成

二、實驗步驟

1. Linux使用參考“別出心裁的Linux命令學習法

Linux下C編程的工具集:

  • Vim
  • GCC
  • GDB
  • Make

我們提倡在Linux命令行下學習C程序設計。學習時在Ubuntu Bash中通過Ctrl+Shift+T快捷鍵打開三個標簽(tab),:

  • 一個使用vim編輯代碼;
  • 一個使用gcc(或makefile)編譯運行代碼;
  • 一個使用GDB調試代碼。

我們可以使用ALT+1,ALT+2,ALT+3快速切換,達到使用IDE一樣的感覺。

2. Vim

Ubuntu中可以使用sudo apt install vim 安裝Vim。Vim使用參考“做中學之學用學用Vim

3. gcc

GNU CC(簡稱為gcc)是GNU項目中符合ANSI C標准的編譯系統,能夠編譯用C、C++和Object C等語言編寫的程序。gcc又是一個交叉平台編譯器,它能夠在當前CPU平台上為多種不同體系結構的硬件平台開發軟件,因此尤其適合在嵌入式領域的開發編譯。 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(sudo apt install cgdb安裝),比GDB好用,熟悉VC,CodeBlock等IDE的調試方式的同學,可以使用DDD(sudo apt install 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

三、練習

  1. 練習vimtutuor至少一遍;
  2. 使用vim 輸入以下代碼,練習使用“K”查找幫助文檔:
    練習
  3. 練習gcc編譯運行代碼;
  4. 練習gdb調試代碼;
  5. 把上述代碼中除了main函數外的代碼制作成一個靜態庫math.a和一個共享庫math.so;
  6. 編寫makefile,讓代碼編譯,上述靜態庫和共享庫的使用自動化

歡迎關注“rocedu”微信公眾號(手機上長按二維碼)

做中教,做中學,實踐中共同進步!

rocedu



如果你覺得本文對你有幫助,請點一下左下角的“好文要頂”和“收藏該文



免責聲明!

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



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