今天小編給大家分享一下嵌入式linux開發(fā)工具怎么用的相關(guān)知識點,內(nèi)容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
公司主營業(yè)務:成都網(wǎng)站制作、網(wǎng)站建設、移動網(wǎng)站開發(fā)等業(yè)務。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)建站是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)建站推出祁縣免費做網(wǎng)站回饋大家。
嵌入式linux開發(fā)工具有:1、vim工具,vim是從vi發(fā)展出來的一個文本編輯器,有代碼補全,編譯及錯誤跳轉(zhuǎn)等方便編程的功能;2、gcc編譯器,是由GNU開發(fā)的編程語言編譯器;3、工程管理器make,make是linux中的工程自動編譯管理器等。
嵌入式Linux開發(fā)工具
vim的使用
1、文本編輯器:vim +vscode:學會使用并配置vim、安裝及使用插件+遠程鏈接vscode
2、編譯器gcc:常用編譯選項,靜態(tài)庫和動態(tài)庫的制作和使用
3、調(diào)試器gdb:斷點調(diào)試、查看內(nèi)存、調(diào)試內(nèi)存錯誤
4、工程管理器make:編寫Makfile,多目錄的Makefile 編寫
5、shell編程(C語言之后)
6、git版本管理工具(線上:C語言)
7、Cmake(項目)
8、內(nèi)存檢測工具(線上: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.。
跳轉(zhuǎn): n 文件名
文件保存 w r
sp+文件名 多文件編寫
gcc編譯器
<> 和“”區(qū)別:搜索路徑不同:前者在系統(tǒng)頭文件目錄《/usr/include》搜索,若沒有,就報錯
后者在當前目錄查找,若沒有,再到系統(tǒng)頭文件目錄查找,若沒有,就報錯
規(guī)范:<>包含系統(tǒng)頭文件 “”包含自定義頭文件
#if 0 //注釋 //#if 1//取消注釋
#endif
不同的處理器有不同的匯編
系統(tǒng)內(nèi)的所有頭文件都在 vim/user/include/頭文件
gcc概述:GNU計劃提供的編譯器(Unix cc編譯器 )(編譯工具鏈 g++ ld ldfd)–>(交叉編譯工具鏈)
什么是交叉編譯?.c->.s->.o->elf
在宿主機下編譯出在目標機下運行的代碼的過程
在當前CPU平臺下編譯出在其它CPU平臺運行的代碼的過程
a\源文件到可執(zhí)行經(jīng)歷了哪幾個步驟?(預處理,編譯,匯編,鏈接)
b\預處理的任務:頭文件展開(#include)、宏替換(#define)、條件編譯(#ifdef)(#開頭的代碼)
c\編譯的任務:檢查語法。轉(zhuǎn)成匯編、生成匯編文件(.s/.S)
d\匯編的任務:編譯匯編文件,生成目標文件(.o)
e\鏈接的任務:鏈接所有目標文件,生成符號表,生成可執(zhí)行文件
編譯選項
-o(可執(zhí)行重命名:elf格式?)
-E(編譯器只進行預處理)
-I:指定頭文件編譯的第三方路徑
-S:進行編譯階段
-c:進行到匯編階段
-O1 -O2 -O3(編譯優(yōu)化):百度查分別做了什么
-w(關(guān)警告) -Wall(開警告) :開關(guān)警告信息
庫文件
編譯器gcc(靜態(tài)庫的動態(tài)庫的制作和使用)
調(diào)試器gdb(常用命名,調(diào)用內(nèi)存錯誤)
工程管理器make(makefile編寫,多目錄的Makefile的編寫)
extern:該函數(shù)在其它文件已經(jīng)定義
庫函數(shù):printf scanf strcpy strcat(保存在庫文件)
庫文件:保存函數(shù)和變量,里面的函數(shù)和變量只能使用,但是看不到其實現(xiàn)
庫文件分類:靜態(tài)庫(.a) 和動態(tài)庫(.so)
靜態(tài)庫(.a):保存的函數(shù)和變量,在編譯階段加載到可執(zhí)行文件中
動態(tài)庫(.so):保存的函數(shù)和變量,在執(zhí)行階段加載到執(zhí)行文件中
使用靜態(tài)庫和動態(tài)庫的區(qū)別(可執(zhí)行文件的區(qū)別:)
使用靜態(tài)庫編譯出來的執(zhí)行文件>使用動態(tài)庫編譯出來的可執(zhí)行文件大小 --影響內(nèi)存的開銷
使用靜態(tài)庫編譯出來的執(zhí)行文件執(zhí)行速度>使用動態(tài)庫編譯出來的可執(zhí)行文件執(zhí)行速度
使用靜態(tài)庫編譯出來的執(zhí)行文件升級<使用動態(tài)庫編譯出來的可執(zhí)行文件升級
使用靜態(tài)庫編譯出來的執(zhí)行文件程序部署>使用動態(tài)庫編譯出來的可執(zhí)行文件程序部署
庫文件的存放路徑:
系統(tǒng)運行所需要的庫文件:/lib
第三方軟件和工具運行所需要的庫:/usr/lib
編譯時,編譯器會自動到這兩個目錄里找所需要鏈接的庫文件
制作靜態(tài)庫:
將目標源文件編譯成目標文件:gcc -c 目標源文件(可以多個)(gcc -c add.c)
使用ar工具制作靜態(tài): ar -rcs(庫不存在就創(chuàng)建,存在就更新)所要生成的庫文件的名字(lib+庫名+后綴.a)目標文件
例:ar -rcs libadd.a add.o
使用靜態(tài)庫:
-l:指定加載哪個靜態(tài)庫 -l庫名
-L:指定加載的庫文件的存放路徑
gcc 源文件 -l庫名 -L庫存放的路徑
例:gcc demo.c -ladd -L./libls
工程管理器make
什么是工程?
多個源文件+其他文件(圖片+頭文件+腳本文件)
工程管理器的作業(yè):編譯多個源文件
gcc +所有源文件 -o 可執(zhí)行文件 —>自動編譯
make依賴于Makefile文件;
Makefile文件是一種腳本文件(批處理),存在相關(guān)語法
Makefile語法:
三要素:目標、依賴、命令
格式:
目標:依賴
tab 命令
目標:最終生成的文件
依賴:生成目標時所需要的文件
命令:生成目標時,需要執(zhí)行的命令
執(zhí)行順序:
make:默認從第一個目標體執(zhí)行
make+ 目標體:從對應的目標體執(zhí)行
如果目標體后面依賴的文件是一個目標的話,先執(zhí)行依賴對應的目標,再執(zhí)行目標體的命令
可以建makefile或者Makefile make -f Makefile -f指定執(zhí)行那個Makefile
Makefile:
注釋: #
目標可以用$@代替
多級目錄下的Makefile:
頂層Makefile:總控Makefile
子目錄Makefile:功能Makefile
scripts目錄Makefile:頭文件Makefile
總控Makefile:進入各個功能子目錄下執(zhí)行make命令,將各個子目錄下的.o文件鏈接成可執(zhí)行文件
功能Makefile:將當前目錄下的.c文件編譯生成.o文件
頭文件Makefile:定義一些變量
以上就是“嵌入式linux開發(fā)工具怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。