首頁 >運維 >linux運維 >嵌入式linux開發工具有哪些

嵌入式linux開發工具有哪些

藏色散人
藏色散人原創
2023-03-17 09:43:152983瀏覽

嵌入式linux開發工具有:1、vim工具,vim是從vi發展出來的一個文字編輯器,有程式碼補全,編譯及錯誤跳轉等方便程式設計的功能;2、gcc編譯器,是由GNU開發的程式語言編譯器;3、工程管理器make,make是linux中的工程自動編譯管理器等。

嵌入式linux開發工具有哪些

本教學操作環境:linux5.9.8系統、Dell G3電腦。

嵌入式linux開發工具有哪些?

嵌入式Linux開發工具

vm的使用

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:

註解:

#目標可以用$@取代

嵌入式linux開發工具有哪些

嵌入式linux開發工具有哪些

嵌入式linux開發工具有哪些

嵌入式linux開發工具有哪些

嵌入式linux開發工具有哪些

多層目錄下的Makefile:

  • 頂層Makefile:總控Makefile

  • 子目錄Makefile:功能Makefile

  • scripts目錄Makefile:頭檔Makefile

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

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

頭檔Makefile:定義一些變數

相關推薦:《

Linux影片教學

以上是嵌入式linux開發工具有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn