嵌入式系統設計 Linux開發工具 中(4)

2021-10-04 01:29:42 字數 3215 閱讀 2395

1.gnu計畫的工具:核心除錯kgdb

2.程式的錯誤分類:編譯時錯誤,語法錯誤 ,執行時錯誤:記憶體錯誤,邏輯錯誤

3.gdb的功能:執行程式;設定斷點;檢視變數值

4.例如有乙個hello.c檔案,則執行命令

5.基礎命令

–tui:圖形介面化

layout:用於分割視窗,可以一邊檢視**,一邊測試。主要有以下幾種用法:

layout asm 顯示匯程式設計序

layout src 顯示原始碼視窗

layout regs:顯示源**/彙編和暫存器視窗

layout split:顯示源**和彙編視窗

layout next:顯示下乙個layout

layout prev:顯示上乙個layout

ctrl + l:重新整理視窗

ctrl + x,再按1:單視窗模式,顯示乙個視窗

ctrl + x,再按2:雙視窗模式,顯示兩個視窗

ctrl + x,再按a:回到傳統模式,即退出layout,回到執行layout之前的除錯視窗。

run 執行命令

break+行號

break+函式名

break+行號 if條件

info break 檢視斷點資訊

delete+斷點編號

enable+斷點編號

disable+斷點編號

單步執行:step next

step 可以進入子函式

next 不可以進入子函式

—實現自動編譯(根據makefile實現)

1.編譯很多個檔案(型別不同、存放不再不同目錄、資源檔案使用)組成的軟體**結構 --實現自動編譯(根據makefile檔案的內容進行)。

「自動編譯」:

(1)根據makefile檔案的內容進行自動編譯;

(2)根據檔案的時間戳來判斷檔案是否需要編譯。

單個.c —gcc hello.c -o hello

多個.c –gcc .c -o hello(所有的.o檔案存放在hello中)。

2、make讀取makefile內容(如何編寫makefile檔案?)

(1)makefile是個指令碼檔案(批處理)

(2)makefile語法: 目標、依賴、命令

格式:目標:依賴

換行輸命令(有時可能需要按tab)。

可以理解為執行命令,依賴這個檔案,最終生成目標。

(4)makefile執行順序:自上向下,當你的目標依賴的檔案又是有乙個目標時,會先跳轉到該目標去執行相關命令。

例:

結果為

看上去是從後往前執行命令了。

首先我們是建立了乙個hello檔案

需要生成該檔案的makefile檔案,從前往後執行,makefile中第一行的依賴(hello:hello.o)為第二行的目標(hello.o:hello.c),也就是說hello.o還沒生成,所以系統自動跳轉,先執行了第二行命令。

(5)執行make,假設檔案中有多個makefile檔案,則使用命令——make -f 檔名

(6)偽目標:執行命令,不生成對應的檔案。.phony:

偽目標是用來簡化操作的,提前將命令用乙個簡單的單詞申明好,這裡就要提到另外一點makefile的執行

(7)makefile的執行

makefile一般只會執行一次,連續執行會有提示

這是因為makefile是根據檔案的時間戳來判斷檔案是否需要編譯的,所以有兩種方法可以解決

(a)更新你的makefile

(b)刪除makefile生成檔案(目標)

(8)makefile檔案執行後會把命令全部顯示出來

解決方法就是在每行命令前加個@,有時會擔心命令是否執行,則可以加一段命令echo用來輸出一段話

(9)makefile中存在內建變數,可以讓輸入更加簡便。

例$@代表依賴

3、為什麼將.c檔案先編譯生成.o檔案,再由.o檔案生成可執行檔案?

前提:原始檔到可執行檔案:預處理、編譯、彙編、鏈結(1s)

gcc hello.c -0 hello 4s

cal:main.c add.c sub.c div.c mul.c

gcc .c -0 cal

假設修改了add.c — make: 20s

假設修改了add.c — make:(.c -->.0) 第一次:20s,第二次:4s+4s=8s。

4、功能目錄管理軟體**:

1.scripts目錄標頭檔案makefile:定義變數,供其他makefile使用。

2.總控makefile:進入各個功能目錄執行make,並將所有.o檔案鏈結生成可執行檔案。

3.功能目錄makefile:將功能目錄下的原始檔編譯生成目標檔案.o。

例:執行多檔案

原始檔包含add,sub,mul,div四個檔案

makefile檔案(兩種方式)

(1)(2)

嵌入式系統 設計開發篇

嵌入式系統設計方法 一般由5個階段構成 需求分析 體系結構設計 軟硬體設計 系統整合 系統測試 宿主機和目標機的連線 1 物理連線 指宿主機與目標機上的一定物理埠通過物理線路連線在一起 常用的連線方式有 串列埠 乙太網介面 ocd方式。2 邏輯連線 指宿主機與目標機間按某種通訊協議建立起來的通訊連線...

嵌入式Linux系統開發

對於嵌入式系統,大家都很熟悉吧 現在隨著網路的發展,嵌入式已經成為it最有發展前途的乙個行業,所以很多人都想著學習嵌入式。舉個列子吧 對於乙個新手來說,如果讓他完成一項linux的系統開發,對他而言難於上青天 在凌陽教育是這樣安排的一些課程 linux系統提供了許許多多的功能,作為乙個軟體開發人員我...

嵌入式系統設計 Linux命令

1.其他目錄的作用 lib 系統呼叫的函式庫儲存位置 lost found 當系統意外崩潰或意外關機,而產生一些檔案碎片放在這裡.當系統啟動的過程中fsck工具會檢查這裡,並修復已損壞的檔案系統.這個目錄只在每個分割槽 現,例如 lost found 就是根分割槽的備份恢復目錄,boot lost ...