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 ...