嵌入式第四周課堂總結

2021-10-04 08:25:48 字數 2755 閱讀 1630

偵錯程式:gdb

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

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

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

4.hello.c gcc -g hello.c -o hello

gcc gdb

5.使用

–tui:

layout asm

layout src

layout split

(run finish continue)

斷點(break +行號

break+函式名

break+行號 if條件

info break

delete+break)

(enable +斷點編號

disable+斷點編號)

單步執行:step next

工程管理器:make(-make -cmake)—實現自動編譯(根據makefile實現)

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

「自動編譯」:

自動編譯:在整個編譯過程中無需人工干預。

時間戳:檔案修改時間

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

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

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

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

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

格式:目標:依賴、按下tab命令。

(3)執行命令,依賴這個檔案,最終生成目標。

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

(5)make +目標名:從該目標開始自.上向下執行。

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

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、功能目錄管理軟體**:

makefile:(閱讀makefile的順序1-3)

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

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

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

偽目標:不會生成乙個檔案,只用來執行命令,有時稱為標籤。

phony 目標並非實際的檔名:只是在顯式請求時執行命令的名字。

使用phony 目標的原因:

(1).避免和同名檔案衝突。phony目標並非是由其它檔案生成的實際檔案,make 會跳過隱含規則搜尋,改善效能。

(2).如果編寫乙個規則,並不產生目標檔案,則其命令在每次make 該目標時都執行。例如:

clean:

rm *.o temp

因為"rm"命令並不產生"clean"檔案,則每次執行"makeclean"的時候,該命令都會執行。如果目錄**現了"clean"檔案,則規則失效了:沒有依賴檔案,檔案"clean"始終是最新的,命令永遠不會執行;為避免這個問題,可使用".phony"指明該目標。

如:.phony :clean

這樣執行"makeclean"會無視"clean"檔案存在與否。

完整的例子如下:

.phony :clean

clean :

rm *.o temp

phony 目標可以有依賴關係。當乙個目錄中有多個程式,將其放在乙個makefile 中會更方便。因為預設目標是makefile 中的第乙個目標,通常將這個phony 目標叫做"all",其依賴檔案為各個程式:

all : demo1demo2 demo3

.phony :all

demo1 :demo1.o

gcc -o demo1 prog1.o

demo2 : demo2.o

gcc -o demo2 demo2.o

demo3 : demo3.o

gcc -o demo3 demo3.o

make clean清除上次的make命令所產生的object檔案(字尾為「.o」的檔案)及可執行檔案。

make install將編譯成功的可執行檔案安裝到系統目錄,一般為/usr/local/bin目錄。

make就是make all編譯用的, 根據makefile檔案編譯源**、連線、生成目標檔案、可執行檔案。

makefile(指令碼檔案)—是一種指令碼語言,因為是批處理,一般用來做測試檔案,常用語言有python,shell…

makefile放在頂層目錄,功能目錄,scripts目錄下

*功能目錄:將src目錄下的.c檔案編譯生成.o檔案

*scripts目錄:定義許多變數(提高makefile的靈活性和維護性,相當於c語言中的標頭檔案)

makefile檢視順序:scripts目錄–à總控目錄–à功能目錄

嵌入式第五周課堂總結

自動生成 cmake autotool 嵌入式linux開發工具 shell程式設計 指令碼 批處理 linux系統運維工程師 嵌入式系統開發 系統移植 shell 1.命令解析器 將使用者輸入的命令解析,呼叫相應的命令的可執行檔案 2.指令碼語言 命令 可執行檔案 變數 if for while ...

第四周 課堂活動(體重問題)

問題 設計乙個能身測試高體重是否標準的物件導向的程式 解決 include using namespace std void fun out double w,double w class test void fun void test fun else weight height 105 fun ...

嵌入式Linux第二週課堂拓展

自學20條命令 1.cat cat n file1 標示檔案的行數 cat b file1 和 n 相似,只不過對於空白行不編號 cat s file 當遇到有連續兩行以上的空白行,就代換為一行的空白行 cat e 或 在每行結束處顯示 2.cmp cmp file1 file2如果檔案相同,則不顯...