Linux下C語言編程基礎

Linux下C語言編程基礎

1、目的

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

2、實驗步驟

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

Linux下C編程的工具集:html

  • Vim
  • GCC
  • GDB
  • Make

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

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

咱們可使用ALT+1,ALT+2,ALT+3快速切換,達到使用IDE同樣的感受。web

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編譯代碼的過程以下:vim

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

3、練習

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

歡迎關注「rocedu」微信公衆號(手機上長按二維碼)

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

rocedu



若是你以爲本文對你有幫助,請點一下左下角的「好文要頂」和「收藏該文

相關文章
相關標籤/搜索