溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

嵌入式linux開發(fā)工具怎么用

發(fā)布時(shí)間:2023-03-17 10:14:56 來(lái)源:億速云 閱讀:242 作者:iii 欄目:建站服務(wù)器

今天小編給大家分享一下嵌入式linux開發(fā)工具怎么用的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來(lái)了解一下吧。

嵌入式linux開發(fā)工具有:1、vim工具,vim是從vi發(fā)展出來(lái)的一個(gè)文本編輯器,有代碼補(bǔ)全,編譯及錯(cuò)誤跳轉(zhuǎn)等方便編程的功能;2、gcc編譯器,是由GNU開發(fā)的編程語(yǔ)言編譯器;3、工程管理器make,make是linux中的工程自動(dòng)編譯管理器等。

嵌入式Linux開發(fā)工具

vim的使用

1、文本編輯器:vim +vscode:學(xué)會(huì)使用并配置vim、安裝及使用插件+遠(yuǎn)程鏈接vscode

2、編譯器gcc:常用編譯選項(xiàng),靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)的制作和使用

3、調(diào)試器gdb:斷點(diǎn)調(diào)試、查看內(nèi)存、調(diào)試內(nèi)存錯(cuò)誤

4、工程管理器make:編寫Makfile,多目錄的Makefile 編寫

5、shell編程(C語(yǔ)言之后)

6、git版本管理工具(線上:C語(yǔ)言)

7、Cmake(項(xiàng)目)

8、內(nèi)存檢測(cè)工具(線上:C語(yǔ)言)

vi/vim/gvim:文本編輯器 gedit emac(脫離鼠標(biāo))

  • 適用場(chǎng)景:?jiǎn)挝募庉?;vim+插件(高度定制)>IDE

  • vim模式:命令行模式(初次進(jìn)入,按a,i)、底行模式、插入模式(esc切換為命令行)wq保存退出

  • vim配置(vimc):

修改/etc/vim/vimc文件(行號(hào),縮進(jìn)風(fēng)格、鼠標(biāo)支持)

vim /etc/vim/vimrc

安裝插件

  • vim命令的使用:

命令行: yy復(fù)制 p粘貼 dd刪除 u恢復(fù)上一行

底行:查找 /str ?str

替換: 行號(hào)或者 %s/old/new/gc

編輯多個(gè)文件:vim文件1 文件2 文件3.。

跳轉(zhuǎn): n 文件名

文件保存 w r

sp+文件名 多文件編寫

gcc編譯器

<> 和“”區(qū)別:搜索路徑不同:前者在系統(tǒng)頭文件目錄《/usr/include》搜索,若沒有,就報(bào)錯(cuò)

后者在當(dāng)前目錄查找,若沒有,再到系統(tǒng)頭文件目錄查找,若沒有,就報(bào)錯(cuò)

規(guī)范:<>包含系統(tǒng)頭文件 “”包含自定義頭文件

#if 0 //注釋 //#if 1//取消注釋
#endif

不同的處理器有不同的匯編

系統(tǒng)內(nèi)的所有頭文件都在 vim/user/include/頭文件

  • gcc概述:GNU計(jì)劃提供的編譯器(Unix cc編譯器 )(編譯工具鏈 g++ ld ldfd)–>(交叉編譯工具鏈)

  • 什么是交叉編譯?.c->.s->.o->elf

在宿主機(jī)下編譯出在目標(biāo)機(jī)下運(yùn)行的代碼的過程

在當(dāng)前CPU平臺(tái)下編譯出在其它CPU平臺(tái)運(yùn)行的代碼的過程

a\源文件到可執(zhí)行經(jīng)歷了哪幾個(gè)步驟?(預(yù)處理,編譯,匯編,鏈接)
b\預(yù)處理的任務(wù):頭文件展開(#include)、宏替換(#define)、條件編譯(#ifdef)(#開頭的代碼)
c\編譯的任務(wù):檢查語(yǔ)法。轉(zhuǎn)成匯編、生成匯編文件(.s/.S)
d\匯編的任務(wù):編譯匯編文件,生成目標(biāo)文件(.o)
e\鏈接的任務(wù):鏈接所有目標(biāo)文件,生成符號(hào)表,生成可執(zhí)行文件

  • 編譯選項(xiàng)

-o(可執(zhí)行重命名:elf格式?)

-E(編譯器只進(jìn)行預(yù)處理)

-I:指定頭文件編譯的第三方路徑

-S:進(jìn)行編譯階段

-c:進(jìn)行到匯編階段

-O1 -O2 -O3(編譯優(yōu)化):百度查分別做了什么

-w(關(guān)警告) -Wall(開警告) :開關(guān)警告信息

庫(kù)文件

  • 編譯器gcc(靜態(tài)庫(kù)的動(dòng)態(tài)庫(kù)的制作和使用)

  • 調(diào)試器gdb(常用命名,調(diào)用內(nèi)存錯(cuò)誤)

  • 工程管理器make(makefile編寫,多目錄的Makefile的編寫)

extern:該函數(shù)在其它文件已經(jīng)定義

庫(kù)函數(shù):printf scanf strcpy strcat(保存在庫(kù)文件)

庫(kù)文件:保存函數(shù)和變量,里面的函數(shù)和變量只能使用,但是看不到其實(shí)現(xiàn)

庫(kù)文件分類:靜態(tài)庫(kù)(.a) 和動(dòng)態(tài)庫(kù)(.so)

靜態(tài)庫(kù)(.a):保存的函數(shù)和變量,在編譯階段加載到可執(zhí)行文件中

動(dòng)態(tài)庫(kù)(.so):保存的函數(shù)和變量,在執(zhí)行階段加載到執(zhí)行文件中

使用靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)的區(qū)別(可執(zhí)行文件的區(qū)別:)

  • 使用靜態(tài)庫(kù)編譯出來(lái)的執(zhí)行文件>使用動(dòng)態(tài)庫(kù)編譯出來(lái)的可執(zhí)行文件大小 --影響內(nèi)存的開銷

  • 使用靜態(tài)庫(kù)編譯出來(lái)的執(zhí)行文件執(zhí)行速度>使用動(dòng)態(tài)庫(kù)編譯出來(lái)的可執(zhí)行文件執(zhí)行速度

  • 使用靜態(tài)庫(kù)編譯出來(lái)的執(zhí)行文件升級(jí)<使用動(dòng)態(tài)庫(kù)編譯出來(lái)的可執(zhí)行文件升級(jí)

  • 使用靜態(tài)庫(kù)編譯出來(lái)的執(zhí)行文件程序部署>使用動(dòng)態(tài)庫(kù)編譯出來(lái)的可執(zhí)行文件程序部署

庫(kù)文件的存放路徑:

系統(tǒng)運(yùn)行所需要的庫(kù)文件:/lib

第三方軟件和工具運(yùn)行所需要的庫(kù):/usr/lib

編譯時(shí),編譯器會(huì)自動(dòng)到這兩個(gè)目錄里找所需要鏈接的庫(kù)文件

制作靜態(tài)庫(kù):

  • 將目標(biāo)源文件編譯成目標(biāo)文件:gcc -c 目標(biāo)源文件(可以多個(gè))(gcc -c add.c)

  • 使用ar工具制作靜態(tài): ar -rcs(庫(kù)不存在就創(chuàng)建,存在就更新)所要生成的庫(kù)文件的名字(lib+庫(kù)名+后綴.a)目標(biāo)文件

例:ar -rcs libadd.a add.o

使用靜態(tài)庫(kù):

-l:指定加載哪個(gè)靜態(tài)庫(kù) -l庫(kù)名

-L:指定加載的庫(kù)文件的存放路徑

gcc 源文件 -l庫(kù)名 -L庫(kù)存放的路徑

例:gcc demo.c -ladd -L./libls

工程管理器make

  • 什么是工程?

多個(gè)源文件+其他文件(圖片+頭文件+腳本文件)

  • 工程管理器的作業(yè):編譯多個(gè)源文件

gcc +所有源文件 -o 可執(zhí)行文件 —>自動(dòng)編譯

  • make依賴于Makefile文件;

  • Makefile文件是一種腳本文件(批處理),存在相關(guān)語(yǔ)法

  • Makefile語(yǔ)法:

三要素:目標(biāo)、依賴、命令

格式:

目標(biāo):依賴

tab 命令

目標(biāo):最終生成的文件

依賴:生成目標(biāo)時(shí)所需要的文件

命令:生成目標(biāo)時(shí),需要執(zhí)行的命令

執(zhí)行順序:

make:默認(rèn)從第一個(gè)目標(biāo)體執(zhí)行

make+ 目標(biāo)體:從對(duì)應(yīng)的目標(biāo)體執(zhí)行

如果目標(biāo)體后面依賴的文件是一個(gè)目標(biāo)的話,先執(zhí)行依賴對(duì)應(yīng)的目標(biāo),再執(zhí)行目標(biāo)體的命令

可以建makefile或者M(jìn)akefile make -f Makefile -f指定執(zhí)行那個(gè)Makefile

Makefile:

注釋: #

目標(biāo)可以用$@代替

嵌入式linux開發(fā)工具怎么用

嵌入式linux開發(fā)工具怎么用

嵌入式linux開發(fā)工具怎么用

嵌入式linux開發(fā)工具怎么用

嵌入式linux開發(fā)工具怎么用

多級(jí)目錄下的Makefile:

  • 頂層Makefile:總控Makefile

  • 子目錄Makefile:功能Makefile

  • scripts目錄Makefile:頭文件Makefile

總控Makefile:進(jìn)入各個(gè)功能子目錄下執(zhí)行make命令,將各個(gè)子目錄下的.o文件鏈接成可執(zhí)行文件

功能Makefile:將當(dāng)前目錄下的.c文件編譯生成.o文件

頭文件Makefile:定義一些變量

以上就是“嵌入式linux開發(fā)工具怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI