嵌入式Linux開發(fā)技術(shù) 第2章 嵌入式Linux開發(fā)環(huán)境_第1頁
嵌入式Linux開發(fā)技術(shù) 第2章 嵌入式Linux開發(fā)環(huán)境_第2頁
嵌入式Linux開發(fā)技術(shù) 第2章 嵌入式Linux開發(fā)環(huán)境_第3頁
嵌入式Linux開發(fā)技術(shù) 第2章 嵌入式Linux開發(fā)環(huán)境_第4頁
嵌入式Linux開發(fā)技術(shù) 第2章 嵌入式Linux開發(fā)環(huán)境_第5頁
已閱讀5頁,還剩68頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

Internet+Education

Solutions第2章嵌入式Linux開發(fā)環(huán)境2.1

Linux安裝與命令使用EducationSolutions目錄ContentsInternet+Linux安裝與系統(tǒng)配置Linux軟件包管理機制Linux基本命令Linux編輯器LinuxShell腳本開發(fā)實踐Linux系統(tǒng)安裝基本知識文件系統(tǒng)的接口對象操縱和管理的軟件集合對象及屬性6:46

/文件系統(tǒng)Linux和Windows文件系統(tǒng)區(qū)別6:46

/對比項目Linux的文件系統(tǒng)Windows的文件系統(tǒng)文件系統(tǒng)類型根目錄文件系統(tǒng)多根目錄文件系統(tǒng)路徑名分割符不同/\文件系統(tǒng)結(jié)構(gòu)文件夾驅(qū)動器盤符Linux系統(tǒng)安裝基本知識分區(qū)分區(qū)是對硬盤的一種格式化。當(dāng)創(chuàng)建分區(qū)時,就會設(shè)置好硬盤的各項物理參數(shù),指定硬盤主引導(dǎo)記錄和引導(dǎo)記錄備份的存放位置。掛載與掛載點掛載是指由操作系統(tǒng)使一個存儲設(shè)備上的計算機文件和目錄可供用戶通過計算機的文件系統(tǒng)訪問的一個過程。掛載點必須是一個目錄。掛載點實際上就是linux中的磁盤文件系統(tǒng)的入口目錄,類似于windows中的用來訪問不同分區(qū)的盤符。GRUBGRUB(GRand

Unified

Bootloader)是一個多操作系統(tǒng)啟動程序,允許用戶可以在計算機內(nèi)同時擁有多

個操作系統(tǒng),并在計算機啟動時選擇希望運行的操作系統(tǒng)。GRUB可用于選擇操作系統(tǒng)分區(qū)上的不同內(nèi)核,也可用于向這些內(nèi)核傳遞啟動參數(shù)。6:46

/Linux系統(tǒng)安裝基本知識分區(qū)格式FAT16這是MS-DOS和最早期的Win

95操作系統(tǒng)中最常見的磁盤分區(qū)格式。它采用16位的文件分

配表,能支持最大為2GB的分區(qū),是目前應(yīng)用最為廣泛和獲得操作系統(tǒng)支持最多的一種磁盤分區(qū)格式,F(xiàn)AT32這種格式采用32位的文件分配表,使其對磁盤的管理能力大大增強,突破了FAT16對每一個分區(qū)的容量只有2GB的限制。但在WIN2K&XP系統(tǒng)中,由于系統(tǒng)限制,單個分區(qū)最大容量為32GB。NTFS它的優(yōu)點是安全性和穩(wěn)定性極其出色,在使用中不易產(chǎn)生文件碎片。它能對用戶的操作進行

記錄,通過對用戶權(quán)限進行非常嚴(yán)格的限制,使每個用戶只能按照系統(tǒng)賦予的權(quán)限進行操作,充分保護了系統(tǒng)與數(shù)據(jù)的安全。Linux它的磁盤分區(qū)格式與其它操作系統(tǒng)完全不同,共有兩種。一種是LinuxNative主分區(qū),一種是LinuxSwap交換分區(qū)。這兩種分區(qū)格式的安全性與穩(wěn)定性極佳,結(jié)合Linux操作系統(tǒng)后,死機的機會大大減少。6:46

/Linux安裝過程選擇新建分區(qū)表選項創(chuàng)建分區(qū)進行掛載安裝6:47

/6:47

/Linux安裝過程首先選擇選擇新建分區(qū)表選項,會彈出一個提示框圖,選擇繼續(xù)。然后單擊選中空閑那一欄。Linux安裝過程創(chuàng)建分區(qū)。

掛載點選擇一定要設(shè)置為根目錄即/圖標(biāo),然后點擊確定,進行下一步,然后雙擊空閑,選擇主分區(qū),交換空間,然后點擊確定。6:47

/Linux安裝過程

接著鼠標(biāo)單擊/dev/sda1,點擊現(xiàn)在安裝,(注意/dev/sda1分區(qū)),彈出圖標(biāo),選擇繼續(xù),然后就是等待安裝了。6:47

/Linux系統(tǒng)常用服務(wù)配置

系統(tǒng)配置有很多選項,最常見的是網(wǎng)絡(luò)配置和文件傳輸?shù)呐渲茫↙inux和windows交互)。網(wǎng)絡(luò)配置連接方式有網(wǎng)絡(luò)地址轉(zhuǎn)換,NAT網(wǎng)絡(luò),橋接網(wǎng)卡,內(nèi)部網(wǎng)絡(luò)等等。6:47

/Linux系統(tǒng)常用服務(wù)配置Virtualbox中常見的網(wǎng)絡(luò)類型。網(wǎng)絡(luò)地址轉(zhuǎn)換NAT如果只是需要用虛擬機去上網(wǎng),可以用這個配置。但在文件共享方面會有些限制。虛擬機沒有自己獨立IP,虛擬機可以訪問主機,但是主機無法訪問到虛擬機。橋接網(wǎng)卡虛擬機有獨立的IP,就像同處一個局域網(wǎng)中的其他的計算機一樣,主機共享出來了文件夾,在虛擬機中也可以訪問到該共享文件夾內(nèi)部網(wǎng)絡(luò)和橋接網(wǎng)卡類似,但當(dāng)前虛擬機只能被屬于同一主機中的,其他虛擬機所訪問。僅主機適配器用于在無需主機的物理網(wǎng)卡的情況下,創(chuàng)建一個網(wǎng)絡(luò),只有本主機Host和其下的一些虛擬機VirtualMachine6:47

/文件傳輸配置6:47

/

Linux系統(tǒng)之間可以通過安裝ssh協(xié)議利用scp命令進行文件互傳,但是

windows默認(rèn)不支持ssh協(xié)議,可以進行文件夾的映射進行交互,也可以借助其他工具實現(xiàn)windows和linux系統(tǒng)之間的文件傳輸。Linux軟件包管理機制6:47

/軟件包管理機制簡介大多數(shù)類Unix操作系統(tǒng)都提供了一個集中的軟件包管理機制,幫助用戶搜索、安裝和管理軟件。而軟件通常以包的形式存儲在倉庫中。軟件包命名方式為:Filename_Version-Reversion_Architecture.deb系統(tǒng)格式工具Debian.debapt,apt-cache、apt-get、dpkgUbuntu.debapt、apt-cache、apt-get、dpkgCentOSFedora.rpm.rpmyumdnfLinux軟件包管理機制6:47

/軟件包管理工具類別常見工具舉例描述命令行Dpkg-deb、dpkg、apt在命令行模式下完成軟件包管理任務(wù)。為完成軟件包的獲取、查詢、軟件包依賴性檢查、安裝、卸載等任務(wù),需要使用各自不同的命令。文本窗口界面dselect、aptitude、tasksel在文本窗口模式中,使用窗口和菜單可以完成軟件包管理任務(wù)。圖形界面synaptic在X-Window桌面環(huán)境中運行,具有更好的交互性、可讀性、易用性等特點。Deb軟件包管理與常用命令6:47

/

DebianLinux首先提出“軟件包”的管理機制,將應(yīng)用程序的二進制文件、配置文檔、man/info幫助頁面等文件合并打包在一個文件中,用戶使用軟件包管理器直接操作軟件包,完成獲取、安裝、卸載、查詢等操作。Deb基于tar包,因此本身會記錄文件的權(quán)限以及所有者/用戶組。Deb包組成:數(shù)據(jù)包,包含實際安裝的程序數(shù)據(jù)。Deb軟件包管理與常用命令

Ubuntu有兩種類型的軟件包:二進制軟件包(deb)和源代碼包(deb-src)。二進制軟件包(Binary

Packages)包含可執(zhí)行文件、庫文件、配置文件、man/info頁面、版權(quán)聲

明和其它文檔。源代碼包(Source

Packages)包含軟件源代碼、版本修改說明、構(gòu)建指令以及編譯工具等。先由

tar工具歸檔為.tar.gz文件,然后再打包成.dsc文件。6:47

/常用包管理工具命令6:47

/dpkg包管理工具命令管理命令 含義dpkg

-i

<package>安裝一個在本地文件系統(tǒng)上存在的Debian軟件包移除一個已經(jīng)安裝的軟件包移除已安裝軟件包及配置文件列出安裝的軟件包清單顯出軟件包的安裝狀態(tài)dpkg

-r

<package>

dpkg

-P

<package>

dpkg

-L

<package>

dpkg

-s

<package>Rpm包管理與常用命令6:47

/管理命令 含義rpm-ivh

filename.rpm

安裝軟件的命令格式rpm

-Uvh

filename.rpm

升級軟件的命令格式.rpm

-e

filename.rpm

卸載軟件的命令格式rpm

-qpi

filename.rpm

查詢軟件描述信息的命令格式rpm

-qpl

filename.rpm

列出軟件文件信息的命令格式rpm

-qf

filename

查詢文件屬于哪個RPM的命令格式Linux基本命令6:47

/Linux

ShellShell是Linux系統(tǒng)的交互界面,提供用戶與內(nèi)核進行交互操作接口。Shell實際是一個命令解釋器,解釋用戶輸入的命令并且把它們送到內(nèi)核。Shell有自己的編程語言用于對命令的編輯,編寫由shell命令組成的程序。Shell編程語言具有普通編程語言的很多特點,比如它也有循環(huán)結(jié)構(gòu)和分支控制結(jié)構(gòu)等。Linux提供可視的命令輸入界面X

Window的圖形用戶界面(GUI),提供了很多桌面環(huán)境系統(tǒng),有窗口、圖標(biāo)和菜單,所有的管理可以通過鼠標(biāo)控制。6:47

/Linux常用命令命令 含義lspwdcdechocatcp

mvtouchmkdirrmchmodpasswdshutdowntarps、kill查詢當(dāng)前目錄文件列表查詢當(dāng)前所在目錄進入指定目錄在屏幕上輸出字符讀取文件內(nèi)容復(fù)制文件移動文件建立一個文本文件建立一個目錄刪除文件/目錄訪問權(quán)限修改密碼

關(guān)機與重啟壓縮解壓系統(tǒng)管理命令Linux編輯器命令模式輸入模式編輯模式Esc鍵6:47

/按“:”鍵命令以回車鍵結(jié)束運行輸入i、a、o進入vi文件名退出輸出ZZVim編輯器介紹與使用vim是Linux系統(tǒng)的第一個全屏幕交互式編輯程序,有3個模式:插入模式、命令模式、低行模式。Vim編輯器常用命令6:47

/Vi使用的選項 說明vim

filename

打開或新建一個文件,并將光標(biāo)置于第一行的首部vim-r

filename

恢復(fù)上次vim打開時崩潰的文件vim-R

filename

把指定的文件以只讀方式放入Vim編輯器中vim+filename

打開文件,并將光標(biāo)置于最后-行的首部vi+n

filename

打開文件,并將光標(biāo)置于第n行的首部vi

+/pattern

filename

打開文件,并將光標(biāo)置于第一個與pattern匹配的位置vi

-c

command

filename

在對文件進行編輯前,

先執(zhí)行指定的命令Vim編輯器常用命令6:47

/快捷鍵 功能描述i在當(dāng)前光標(biāo)所在位置插入隨后輸入的文本,光標(biāo)后的文本相應(yīng)向右移動I在光標(biāo)所在行的行首插入隨后輸入的文本,行首是該行的第一個非空白字符,相當(dāng)于光標(biāo)移動到首行執(zhí)行i命令o在光標(biāo)所在行的下面插入新的一行。光標(biāo)停在空行首,等待輸入文本O(大寫)在光標(biāo)所在行的上面插入新的一行。光標(biāo)停在空行的行首,等待輸入文本aA在當(dāng)前光標(biāo)所在位置之后插入隨后輸入的文本在光標(biāo)所在行的行尾插入隨后輸入的文本,相當(dāng)于光標(biāo)移動到行尾再執(zhí)行a命令Emacs編輯器介紹與使用

Emacs是一個集成開發(fā)環(huán)境,讓使用者置身于全功能的操作系統(tǒng)中,在

基于編輯器的功能基礎(chǔ)上,Emacs自行開發(fā)了一個“bourne-shell-like”的shell:EShell。1)Ubuntu下安裝Emacs通過在終端輸入下面命令來安裝

sudo

apt-get

install

emacs也可以去下面網(wǎng)站下載Emacs的源代碼來編譯安裝/pub/gnu/emacs2)常用快捷方式Emacs的快捷鍵都是基于Ctrl和Alt鍵,例如C-x就是Ctrl+x,M-x就是Alt+x,所有的按鍵都可以自定義。6:47

/創(chuàng)建Shell腳本6:47

/#!/bin/bashecho

"Hello

World!"#這是一條語句

第1行的#!是一個約定的標(biāo)記,它告訴系統(tǒng)這個腳本需要什么解釋器來執(zhí)行,即使用哪一種Shell;后面的/bin/bash就是指明了解釋器的具體位置。第2行的echo命令用于向標(biāo)準(zhǔn)輸出文件(Standard

Output,stdout,一般就是指顯示器)輸出文本。在.sh文件中使用命令與在終端直接輸入命令的效果是一樣的。第2行的#及其后面的內(nèi)容是注釋。Shell腳本中所有以#開頭的都是注釋(當(dāng)然以#!開頭的除外)。寫腳本的時候,多寫注釋是非常有必要的,以方便其他人能看懂你的腳本,也方便后期自己維護時看懂自己的腳本——實際上,即便是自己寫的腳本,在經(jīng)過一段時間后也很容易忘記。Shell變量系統(tǒng)變量Shell語言的系統(tǒng)變量主要在對參數(shù)判斷和命令返回值判斷時使用,包括腳本和函數(shù)的參數(shù)以及腳本和函數(shù)的返回值。環(huán)境變量Shell的環(huán)境變量是所有的Shell程序都可以使用的變量。Shell程序在運行時,都會接收一組變量,這組變量就是環(huán)境變量。環(huán)境變量會影響到所有的腳本的執(zhí)行結(jié)果。用戶變量變量名稱可以由字母,數(shù)字和下劃線組成,但是不能以數(shù)字開頭,環(huán)境變量名建議大寫,便于區(qū)分。在bash中,變量的默認(rèn)類型都是字符串型,如果要進行數(shù)值運算,則必須指定變量類型為數(shù)值型。變量用等號連接值,等號左右兩側(cè)不能有空格;變量的值如果有空格,需要使用單引號或者雙引號包括。6:47

/Shell流程控制if語句語法格式:if

condition1thencommand1elif

condition2thencommand2elsecommandNfi實例:a=200b=3006:47

/if

[

$a

==

$b

]thenecho

"a

=

b"elif

[

$a

-gt

$b

]thenecho

"a

>

b"elif

[

$a

-lt

$b

]thenecho

"a

<

b"elseecho"沒有符合的條件"fiShell流程控制for語句語法格式:for

var

in

item1

item2

...

itemNdocommand1command2...commandNdone實例:for

loop

in

3

4

5

6

7doecho

"Value

is:

$loop"done6:47

/Shell流程控制while語句語法格式:while

conditiondocommanddone實例:#!/bin/bashint=26:47

/while((

$int<=6

))doecho

$intlet

"int++"doneShell流程控制case語句語法case格值式in

:模式1)command1command2...commandN;;模式2)command1command2...commandN;;esac實例ech:o"輸入5到8之間的數(shù)字:"echo"輸入的數(shù)字為:"read

aNumcase

$aNum

inecho"選擇了5";;echo"選擇了6";;echo"選擇了7";;echo"選擇了8;;*)echo"沒有輸入5到8之間的數(shù)字";;esac6:47

/Shell腳本執(zhí)行在新進程中運行Shell腳本將Shell腳本作為程序運行將Shell腳本作為參數(shù)傳遞給Bash解釋器在當(dāng)前進程中運行Shell腳本通過source命令6:47

/開發(fā)實踐Linux安裝與命令使用123首先安裝Oracle

VM

VirtualBox管理器通過Oracle

VM

VirtualBox軟件導(dǎo)入虛擬電腦進行虛擬電腦的配置6:47

/開發(fā)實踐Vim編輯器使用創(chuàng)建hello.sh文件,通過Vi編輯器輸入以下內(nèi)容:在終端輸入命令sh

hello.sh,運按下Esc鍵,輸入:wq回車退出,行這個腳本,會打印出如下信息:6:47

/項目思考6:47

/安裝Linux系統(tǒng)需要注意什么?軟件包常用的管理命令有哪些?vim的使用三種模式的切換需要注意什么?Internet+Education

Solutions第2章嵌入式Linux開發(fā)環(huán)境2.2嵌入式開發(fā)工具EducationSolutions目錄ContentsInternet+嵌入式Linux開發(fā)模式遠(yuǎn)程控制工具串口通信工具文件傳輸工具代碼管理工具開發(fā)實踐嵌入式Linux開發(fā)模式6:47

/嵌入式系統(tǒng)開發(fā)主要包括宿主機與目標(biāo)機部分的開發(fā):宿主機能夠?qū)η度胧较到y(tǒng)中的代碼編譯、定址及鏈接進行執(zhí)行,而目標(biāo)機。則是嵌入式系統(tǒng)中的硬件平臺。

嵌入式系統(tǒng)開發(fā)需要將應(yīng)用程序轉(zhuǎn)換成相應(yīng)的二進制代碼,這些二進制代碼能夠在目標(biāo)機中運行,主要分為3個步驟:分別是編譯過程,鏈接過程與定址過程。嵌入式系統(tǒng)調(diào)試過程中,主要是利用交叉調(diào)試器來進行,其調(diào)試方式通常采用宿主機-目標(biāo)機形勢,宿主機與目標(biāo)機之間的連接是通過以太網(wǎng)或串行口線來實現(xiàn),在交叉調(diào)試任務(wù)中,主要包括任務(wù)級調(diào)試、匯編級調(diào)試與源代碼級調(diào)試。嵌入式Linux開發(fā)模式

交叉編譯的引入主要是由于不同架構(gòu)的CPU的指令集不相同,比如在

X86架構(gòu)的處理器上編譯運行的程序,不能直接在XScale構(gòu)架處理器上

運行,不同的CPU有不同的編譯器,另一方面,編譯器本身也是程序,

也要在某一個CPU平臺上運行,而嵌入式目標(biāo)系統(tǒng)不能提供足夠的資源,不能運行編譯器。宿主機目標(biāo)機連接內(nèi)核映像根文件系統(tǒng)內(nèi)核映像下載內(nèi)核映像6:47

/掛載NFS根文件系統(tǒng)遠(yuǎn)程控制工具SSH工具SSH為Secure

Shell的縮寫,SSH為建立在應(yīng)用層基礎(chǔ)上的安全協(xié)議。SSH由客戶端和服務(wù)器端的軟件組成,服務(wù)器端是一個守護進程

(daemon),在后臺運行并響應(yīng)來自客戶端的連接請求。VNC工具簡介與使用VNC(Virtual

Network

Console)虛擬網(wǎng)絡(luò)控制臺基于Linux操作系統(tǒng)的免費的開源軟件,遠(yuǎn)程控制能力強大,VNC包括以下四個命令:

vncserver,vncviewer,vncpasswd,和vncconnect。6:47

/遠(yuǎn)程控制工具vncserver此服務(wù)程序必須在主計算機上運行,只能作為使用者使用此項服務(wù)。vncviewer用于遠(yuǎn)程接入運行vncserver的計算機并顯示其環(huán)境。需要知道遠(yuǎn)程計算機的IP地址和vncserver設(shè)定的密碼。vncpasswdvncserver的密碼設(shè)置工具。vncconnect告訴vncserver連接到遠(yuǎn)程一個運行vncviewer的計算機的IP和端口號。6:47

/2.2.3 串口通信工具選項A的值設(shè)置為/dev/ttyS0表示是串口1。選項E的值設(shè)置為115200

8N1,用來設(shè)置波特率的。選項F的值屬于硬件控制,根據(jù)實際選擇性的設(shè)置。選項G的值屬于軟件控制,根據(jù)實際選擇性的設(shè)置。6:47

/Linux系統(tǒng)minicom工具常用串口通信工具PortHelper包含了USBHID數(shù)據(jù)收發(fā)、網(wǎng)絡(luò)調(diào)試、串口監(jiān)控、數(shù)碼校驗、編碼轉(zhuǎn)換、USB調(diào)試等多種功能,支持中文數(shù)據(jù)的收發(fā)。SSCOMUSB通信支持CH372USB芯片,并支持HIDUSB設(shè)備SUDT

AccessPortSUDT

AccessPort是一款用于PC機串口(RS232)調(diào)試、監(jiān)控的軟件。6:47

/文件傳輸工具rcprcp[-px]

[-k

realm]

file1

file2

rcp

[-px]

[-r]

[-k

realm]

filewgetwget[參數(shù)]ftp://<目標(biāo)機器ip或主機名>/<文件的絕對路徑>rsyncrsync[參數(shù)]<源地址(用戶名@IP地址或主機名)>:<文件路徑><目的地址(用戶名@IP地址或主機名)>:<文件路徑>6:47

/Linux常用傳輸命令scpscp[參數(shù)]<源地址(用戶名@IP地址或主機名)>:<文件路徑><目的地址(用戶名@IP地址或主機名)>:<文件路徑>FTP工具6:47

/

FTP(File

Transfer

Protocol)是Internet上用來傳送文件的協(xié)議(文件傳輸協(xié)議)。FTP工具一般分為FLASHFXP、LEAPFTP、CuteFTP,合稱FTP。

為了能夠在Internet上互相傳送文件而制定的文件傳送標(biāo)準(zhǔn),規(guī)定了

Internet上文件如何傳送。

FTP有下載和上傳兩個功能,要連上FTP服務(wù)器,需要該FTP服務(wù)器的帳號和密碼,利用帳號密碼可以連上該服務(wù)器。Samba工具6:47

/

Samba是在Linux和UNIX系統(tǒng)上實現(xiàn)SMB協(xié)議的一個免費軟件,由服務(wù)

器及客戶端程序構(gòu)成。SMB(Server

Messages

Block,信息服務(wù)塊)

是一種在局域網(wǎng)上共享文件和打印機的一種通信協(xié)議,它為局域網(wǎng)內(nèi)的不同計算機之間提供文件及打印機等資源的共享服務(wù)。例如:Samba既可以用于windows與Linux之間的文件共享;也可以用于Linux與Linux之間的資源共。代碼管理工具Git管理工具簡介Git是一個開源的分布式版本控制系統(tǒng),用于Linux內(nèi)核開發(fā)的版本控制。它采用了分布式版本庫的方式,不必服務(wù)器端軟件支持。Git基本使用安裝Git本地倉庫創(chuàng)建創(chuàng)建SSH

Key添加遠(yuǎn)程倉庫6:47

/開發(fā)實踐主要包括以下工具的學(xué)習(xí)和使用:SSH和VNC工具:主要用于遠(yuǎn)程登錄開發(fā)板系統(tǒng)。1串口通信工具:通過串口通信工具顯示輸出信息2FTP文件傳輸工具:作用是在windows和Linux之間傳輸文件。3Git工具:提交和修改發(fā)布的代碼46:47

/開發(fā)實踐通過使用MobaXterm工具進行SSH遠(yuǎn)程登錄6:47

/開發(fā)實踐通過sftp服務(wù)讓windows和Ubuntu進行文件傳輸6:47

/開發(fā)實踐使用VNC工具遠(yuǎn)程登錄開發(fā)板Ubuntu系統(tǒng)桌面6:47

/項目實現(xiàn)通過tftp從服務(wù)器下載文件tftp

00

–c

get

test.txtGit工具使用創(chuàng)建git目錄:mkdir

git創(chuàng)建倉庫:git

init添加并提交文件到倉庫test@rk3399:~/git$

git

add

test.ctest@rk3399:~/git$

git

commit–m

v1[master(根提交)6c232a9]v11

file

changed,

10

insertions(+)Create

mode

100644

test.c6:47

/項目思考6:47

/嵌入式開發(fā)的流程是什么?嵌入式開發(fā)所使用的工具有哪些?代碼管理工具Git如何使用?什么是交叉開發(fā)模式?Internet+Education

Solutions第2章嵌入式Linux開發(fā)環(huán)境2.3

Linux編譯環(huán)境EducationSolutions目錄ContentsInternet+Linux系統(tǒng)程序開發(fā)流程Linux編譯器安裝與使用Linux動態(tài)庫與靜態(tài)庫Linux調(diào)試器安裝與使用Makefile文件編寫開發(fā)實踐Linux系統(tǒng)程序開發(fā)流程

通過搭建本地開發(fā)環(huán)境,安裝依賴的庫,文件,通過vi編輯器編寫程序代碼,然后通過gcc命令對程序代碼進行編譯鏈接,通過gdb工具進行程序的調(diào)試,最后來運行程序。6:47

/GCC編譯器預(yù)處理編譯匯編鏈接6:47

/

GCC是以GPL許可證所發(fā)行的自由軟件,已被大多數(shù)類Unix操作系統(tǒng)采納為標(biāo)準(zhǔn)的編譯器。

GCC支持多種計算機體系結(jié)構(gòu)芯片,如x86、ARM、MIPS等,并已被移植到其他多種硬件平臺。編譯過程可以被細(xì)分為四個階段:GCC編譯器安裝安裝更新包列表:

sudo

apt

update安裝build-essential軟件包:

sudo

apt

installbuild-essential交叉編譯版本安裝下載arm-linux-gcc安裝包解壓縮配置環(huán)境變量使環(huán)境變量生效檢查是否將路徑添加到PATH6:47

/GCC工作流程Home.cHome.iHome.sHome.o預(yù)處理(cpp)gcc-E編譯器(gcc)gcc-S匯編器(as)gcc-ca.outgcc可執(zhí)行文件鏈接器(id)C文件匯編文件二進制文件編譯工具鏈預(yù)處理器:cpp編譯器:gcc匯編器:as鏈接器:id頭文件展開,宏替換、注釋去掉6:47

/C文件變成匯編文件匯編文件變成二進制文件將函數(shù)庫中相應(yīng)的代碼組合到目標(biāo)文件中GCC常用參數(shù)6:47

/參數(shù) 用途-v-o-I+目錄-D-00/-01/-03-Wall-c-E-g查看版本

產(chǎn)生目標(biāo)文件頭文件目錄

編譯時定義宏沒有優(yōu)化缺省值/優(yōu)化級別最高提示更多警告信息只編譯子程序

生成預(yù)處理文件包含調(diào)試信息6:47

/GCC編譯選項解析選項 含義--help

--target-help--version-o

outfile顯示gcc幫助說明?!畉arget-help’是顯示目標(biāo)機器特定的命令行選項。顯示gcc版本號和版權(quán)信息。輸出到指定的文件。-x

language指明使用的編程語言。允許的語言包括:c

c++assemblernone?!畁one’意味著恢復(fù)默認(rèn)行為,即根據(jù)文件的擴展名猜測源文件的語言。輸出較多信息,顯示編譯器調(diào)用的程序。與-v類似,但選項被引號括住,并且不執(zhí)行命令。僅作預(yù)處理,不進行編譯、匯編和鏈接。僅編譯到匯編語言,不進行匯編和鏈接。編譯、匯編到目標(biāo)代碼,不進行鏈接。

使用管道代替臨時文件。-v-###-E-S-c-pipe-combine將多個源文件一次性傳遞給匯編器。Linux動態(tài)庫與靜態(tài)庫靜態(tài)庫這類庫的名字一般是libxxx.a,xxx為庫的名字。利用靜態(tài)函數(shù)庫編譯成的文件比較大,因為整個函數(shù)庫的所有數(shù)據(jù)都會被整合進目標(biāo)代碼中,他的優(yōu)點就顯而易見動態(tài)庫這類庫的名字一般是libxxx.M.N.so。相對于靜態(tài)函數(shù)庫,動態(tài)函數(shù)庫在編譯的時候并沒有被編譯進目標(biāo)代碼中,你的程序執(zhí)行到相關(guān)函數(shù)時才調(diào)用該函數(shù)庫里的相應(yīng)函數(shù),因此動態(tài)函數(shù)庫所產(chǎn)生的可執(zhí)行文件比較小。6:47

/項目實現(xiàn)動態(tài)庫與靜態(tài)庫區(qū)別預(yù)編譯編譯匯編鏈接源文件

(.h,.cpp等)可執(zhí)行文件6:47

/.a/.lib.so/.dll靜態(tài)庫、動態(tài)庫區(qū)別來自【鏈接階段】如何處理庫,鏈接成可執(zhí)行程序。分別稱為靜態(tài)鏈接方式、動態(tài)鏈接方式。靜態(tài)庫使用6:47

/方法一gcc+源文件+-L靜態(tài)庫路徑+-l靜態(tài)庫名+-I頭文件目錄+-o可執(zhí)行文件名gcc

main.c

-L

lib

-l

MyTest

-I

include

-o

app./app方法二gcc+源文件+-I頭文件+libxxx.a+-o可執(zhí)行文件名gcc

main.c-I

include

lib/libMyTest.a-o

app動態(tài)庫使用6:47

/方法一gcc+源文件+-L動態(tài)庫路徑+-l動態(tài)庫名+-I頭文件目錄+-o可執(zhí)行文件名gcc

main.c

-L

lib

-l

MyTest

-I

include

-o

app./app方法二gcc+源文件+-I頭文件+libxxx.so+-o可執(zhí)行文件名gcc

main.c

-I

include

lib/libMyTest.so

-o

app6:47

/Linux調(diào)試器安裝與使用

GDB(GNU

Debugger)是類Unix(如Linux)操作系統(tǒng)下的一款開源的C/C++程序調(diào)試器。GDB調(diào)試命令命令格式例子作用break+設(shè)置斷點的行號tbreak+行號或函數(shù)名break+filename+行號

break+<0x...>break+行號+if+條件info

breakpoints/watchpoints[n]break

ntbreak

n/funcbreak

main.c:10break

0x3400abreak

10

if

i==3在n行處設(shè)置斷點設(shè)置臨時斷點,到達后被自動刪除用于在指定文件對應(yīng)行設(shè)置斷點用于在內(nèi)存某一位置處暫停用于設(shè)置條件斷點,在循環(huán)中使用非常方便info

breakn表示斷點編號,查看斷點/觀察點的情況clear+要清除的斷點行號clear

10用于清除對應(yīng)行的斷點,要給出斷點的行號,清除時GDB會給出提示用于清除斷點和自動顯示的表達式的命令,要給出斷點的編號,清除時GDB不會給出任何提示讓所設(shè)斷點暫時失效/使能,如果要讓多個編號處的斷點失效/使能,可將編號之間用空格隔開設(shè)置一個觀察點,當(dāng)變量被讀出或?qū)懭霑r程序被暫停設(shè)置一個觀察點,當(dāng)變量被讀出時,程序被暫停delete+要清除的斷點編號delete

3disable/enable+斷點編號disable

3awa

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論