嵌入式linux開發工具有:1、vim工具,vim是從vi發展出來的一個文字編輯器,有程式碼補全,編譯及錯誤跳轉等方便程式設計的功能;2、gcc編譯器,是由GNU開發的程式語言編譯器;3、工程管理器make,make是linux中的工程自動編譯管理器等。
本教學操作環境:linux5.9.8系統、Dell G3電腦。
嵌入式linux開發工具有哪些?
嵌入式Linux開發工具
vim的使用
1、文字編輯器:vim +vscode:學會使用並設定vim、安裝及使用外掛+遠端連結vscode
2、編譯器gcc:常用編譯選項,靜態庫和動態庫的製作和使用
3、偵錯程式gdb:斷點偵錯、檢視記憶體、偵錯記憶體錯誤
4、工程管理器make:編寫Makfile,多目錄的Makefile 編寫
5、shell程式設計(C語言之後)
6、git版本管理工具(線上:C語言)
7、Cmake(專案)
8、記憶體檢測工具(線上:C語言)
vi/vim/gvim:文字編輯器 gedit emac(脫離滑鼠)
適用場景:單檔案編輯;vim+外掛(高度客製化)>IDE
vim模式:命令列模式(初次進入,按a,i)、底行模式、插入模式(esc切換為命令列)wq儲存退出
vim設定(vimc):
修改/etc/vim/vimc檔案(行號,縮排風格、滑鼠支援)
vim /etc/vim/vimrc
登入後複製
安裝外掛
vim命令的使用:
命令列: yy複製 p貼上 dd刪除 u恢復上一行
底行:查詢 /str ?str
替換: 行號或者 %s/old/new/gc
編輯多個檔案:vim檔案1 檔案2 檔案3.。
跳轉: n 檔名
檔案儲存 w r
sp+檔名 多檔案編寫
gcc編譯器
<> 和「」區別:搜尋路徑不同:前者在系統標頭檔案目錄《/usr/include》搜尋,若沒有,就報錯
後者在當前目錄查詢,若沒有,再到系統標頭檔案目錄查詢,若沒有,就報錯
規範:<>包含系統標頭檔案 「」包含自定義標頭檔案
#if 0 //註釋 //#if 1//取消註釋
#endif
登入後複製
不同的處理器有不同的組合
系統內的所有標頭檔案都在 vim/user/include/標頭檔案
gcc概述:GNU計劃提供的編譯器(Unix cc編譯器 )(編譯工具鏈 g++ ld ldfd)–>(交叉編譯工具鏈)
什麼是交叉編譯?.c->.s->.o->elf
在宿主機下編譯出在目標機下執行的程式碼的過程
在當前CPU平臺下編譯出在其它CPU平臺執行的程式碼的過程
a\原始檔到可執行經歷了哪幾個步驟?(預處理,編譯,組合,連結)
b\預處理的任務:標頭檔案展開(#include)、宏替換(#define)、條件編譯(#ifdef)(#開頭的程式碼)
c\編譯的任務:檢查語法。轉成組合、生成組合檔案(.s/.S)
d\組合的任務:編譯組合檔案,生成目標檔案(.o)
e\連結的任務:連結所有目標檔案,生成符號表,生成可執行檔案
登入後複製
編譯選項
-o(可執行重新命名:elf格式?)
-E(編譯器只進行預處理)
-I:指定標頭檔案編譯的第三方路徑
-S:進行編譯階段
-c:進行到組合階段
-O1 -O2 -O3(編譯優化):百度查分別做了什麼
-w(關警告) -Wall(開警告) :開關警告資訊
庫檔案
編譯器gcc(靜態庫的動態庫的製作和使用)
偵錯程式gdb(常用命名,呼叫記憶體錯誤)
工程管理器make(makefile編寫,多目錄的Makefile的編寫)
extern:該函數在其它檔案已經定義
庫函數:printf scanf strcpy strcat(儲存在庫檔案)
庫檔案:儲存函數和變數,裡面的函數和變數只能使用,但是看不到其實現
庫檔案分類:靜態庫(.a) 和動態庫(.so)
靜態庫(.a):儲存的函數和變數,在編譯階段載入到可執行檔案中
動態庫(.so):儲存的函數和變數,在執行階段載入到執行檔案中
使用靜態庫和動態庫的區別(可執行檔案的區別:)
使用靜態庫編譯出來的執行檔案>使用動態庫編譯出來的可執行檔案大小 --影響記憶體的開銷
使用靜態庫編譯出來的執行檔案執行速度>使用動態庫編譯出來的可執行檔案執行速度
使用靜態庫編譯出來的執行檔案升級<使用動態庫編譯出來的可執行檔案升級
使用靜態庫編譯出來的執行檔案程式部署>使用動態庫編譯出來的可執行檔案程式部署
庫檔案的存放路徑:
系統執行所需要的庫檔案:/lib
第三方軟體和工具執行所需要的庫:/usr/lib
編譯時,編譯器會自動到這兩個目錄裡找所需要連結的庫檔案
製作靜態庫:
將目標原始檔編譯成目標檔案:gcc -c 目標原始檔(可以多個)(gcc -c add.c)
使用ar工具製作靜態: ar -rcs(庫不存在就建立,存在就更新)所要生成的庫檔案的名字(lib+庫名+字尾.a)目標檔案
例:ar -rcs libadd.a add.o
使用靜態庫:
-l:指定載入哪個靜態庫 -l庫名
-L:指定載入的庫檔案的存放路徑
gcc 原始檔 -l庫名 -L庫存放的路徑
例:gcc demo.c -ladd -L./libls
工程管理器make
什麼是工程?
多個原始檔+其他檔案(圖片+標頭檔案+指令碼檔案)
工程管理器的作業:編譯多個原始檔
gcc +所有原始檔 -o 可執行檔案 —>自動編譯
make依賴於Makefile檔案;
Makefile檔案是一種指令碼檔案(批次處理),存在相關語法
Makefile語法:
三要素:目標、依賴、命令
格式:
目標:依賴
tab 命令
目標:最終生成的檔案
依賴:生成目標時所需要的檔案
命令:生成目標時,需要執行的命令
執行順序:
make:預設從第一個目標體執行
make+ 目標體:從對應的目標體執行
如果目標體後面依賴的檔案是一個目標的話,先執行依賴對應的目標,再執行目標體的命令
可以建makefile或者Makefile make -f Makefile -f指定執行那個Makefile
Makefile:
註釋: #
目標可以用$@代替
多級目錄下的Makefile:
頂層Makefile:總控Makefile
子目錄Makefile:功能Makefile
scripts目錄Makefile:標頭檔案Makefile
總控Makefile:進入各個功能子目錄下執行make命令,將各個子目錄下的.o檔案連結成可執行檔案
功能Makefile:將當前目錄下的.c檔案編譯生成.o檔案
標頭檔案Makefile:定義一些變數
相關推薦:《》
以上就是嵌入式linux開發工具有哪些的詳細內容,更多請關注TW511.COM其它相關文章!