嵌入式linux開發工具有哪些

2023-03-17 10:00:29

嵌入式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:

註釋: #

目標可以用$@代替

d047452956c8f62b7083189265c2c7d.jpg

42d22545d60ea119fef6d12cfd1b10a.jpg

5847509ee6503919d54df75cdd86a9f.jpg

4d33b4117d350b4e781311ba376b229.jpg

a4ccbd772e7c8738d710c8024cb28cf.jpg

多級目錄下的Makefile:

  • 頂層Makefile:總控Makefile

  • 子目錄Makefile:功能Makefile

  • scripts目錄Makefile:標頭檔案Makefile

總控Makefile:進入各個功能子目錄下執行make命令,將各個子目錄下的.o檔案連結成可執行檔案

功能Makefile:將當前目錄下的.c檔案編譯生成.o檔案

標頭檔案Makefile:定義一些變數

相關推薦:《》

以上就是嵌入式linux開發工具有哪些的詳細內容,更多請關注TW511.COM其它相關文章!