嵌入式設計課程(4)

2021-10-04 07:09:08 字數 1724 閱讀 6195

偵錯程式:gdb

gun計畫的工具;核心除錯kgdb

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

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

hello.c gcc -g hello.c -o hello gdb hello

使用–tui:

layout asm

layout src

layout split

runfinish

continue(結束當前斷點,繼續往下執行,直到遇到下乙個)

break + 行號

break + 函式名

break + 行號if條件

info break;(檢視斷點資訊)

delete + 斷點編號

enable + 斷點

disable + 斷點編號

單步執行:

step(可進入子函式)

next(不可進入子函式)

工程管理器:make — 如何編寫makefile檔案?

1、 工程管理器:編譯很個檔案(型別不同、存放不同目錄、資源檔案使用)組成的軟體**結構 —實現自動編譯(根據makefile檔案內容進行)

makefile「自動編譯「:

1. 根據makefile檔案的內容進行自動編譯

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

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

10000個.c(分別儲存在100個不同目錄) – gcc *.c -o hello

make —makefile(make讀取makefile裡內容)

如何編寫makefile檔案?

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

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

目標:依賴

按下tab 再鍵入命令

執行命令,依賴這個檔案,最終生成目標;

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

make+目標名:從該目標開始自上向下執行;

4 偽目標:執行命令,不生成對應的檔案;

.phony:clean install

echo在終端上?

make -f makefile指定後面的編譯?

./cal

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

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

gcc hello.c -o hello 4s

cal:main

鏈結 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。

功能目錄管理軟體**

makefile:

1、 總控makefile

進入各個功能目錄執行make,並將所有.o檔案鏈結生成可執行檔案(再看)

2、功能目錄makefile

將功能目錄下的原始檔編譯生成目標檔案.o(最後看)

3、scripts目錄標頭檔案makefile

定義變數,供其他makefile使用(閱讀makefile順序:先看)

指令碼程式設計-shell

嵌入式設計課程總結4

偵錯程式 gdb 1.gnu計畫的工具 核心除錯kgdb 2.程式的錯誤分類 編譯時錯誤 語法錯誤 執行時錯誤 記憶體錯誤,邏輯錯誤 3.gdb的功能 1 執行程式 2 設定斷點 3 檢視變數值4.hello.c gcc g hello.c o hello gcc gdb 5.使用 tui 圖形化l...

嵌入式設計課程(3)

嵌入式linux開發工具及課程目標 vim 文字編輯器 學會使用和如何配置vim gcc 編譯器 學會製作動態庫和靜態庫及使用區別 gdp 偵錯程式 設定斷電 單步執行 除錯記憶體錯誤 make 工程管理器 編寫makefile檔案 vi vim im 命令列模式nyy p ndd u 插入模式i ...

3 24嵌入式設計課程

嵌入式linux系統開發 檔案 程序 執行緒 網路 20 嵌入式系統移植8h 嵌入式驅動開發8h 自動生成 cmake autotool 嵌入式linux開發工具 shell程式設計 指令碼 批處理 linux系統運維工程師 嵌入式系統開發 系統移植 shell 1.命令解析器 將使用者輸入的命令解...