創(chuàng)建嵌入式系統(tǒng)開發(fā)環(huán)境ppt課件_第1頁
創(chuàng)建嵌入式系統(tǒng)開發(fā)環(huán)境ppt課件_第2頁
創(chuàng)建嵌入式系統(tǒng)開發(fā)環(huán)境ppt課件_第3頁
創(chuàng)建嵌入式系統(tǒng)開發(fā)環(huán)境ppt課件_第4頁
創(chuàng)建嵌入式系統(tǒng)開發(fā)環(huán)境ppt課件_第5頁
已閱讀5頁,還剩136頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、創(chuàng)建嵌入式系統(tǒng)開發(fā)環(huán)境第3章 主要內(nèi)容1、Linux與嵌入式Linux概述2、Windows下的Linux環(huán)境軟件-cygwin3、Linux文件系統(tǒng)構(gòu)造4、Linux常用命令5、Linux文本編輯器vi6、Linux編譯器gcc及編譯工具7、交叉編譯工具的創(chuàng)建1、Linux操作系統(tǒng)的組成2、Linux操作系統(tǒng)的內(nèi)核版本3、嵌入式LinuxLinux與嵌入式Linux概述 Linux操作系統(tǒng)的組成LINUX的內(nèi)核:含有設(shè)備驅(qū)動程序、系統(tǒng)效力等程序,具有中斷處置、進程調(diào)度、原語管理等功能。LINUX SHELL:Shell是系統(tǒng)的用戶界面,它是一個命令解釋器,它解釋用戶輸入的命令,并且把它們送到

2、內(nèi)核。提供了用戶與內(nèi)核進展交互操作的一種接口。LINUX文件系統(tǒng): 是文件存放在磁盤等存儲設(shè)備上的組織方法。Linux能支持多種目前許多的文件系統(tǒng),如EXT2、EXT3、FAT、VFAT、ISO9660、NFS、SMB等。LINUX運用系統(tǒng):規(guī)范的Linux系統(tǒng)都有一整套稱為運用程序的程序集,包括文本編輯器、編程言語、X Window、辦公套件、Internet工具、數(shù)據(jù)庫等。Linux內(nèi)核采用雙樹構(gòu)造:一棵樹是穩(wěn)定樹,主要用于發(fā)行;另一棵樹是非穩(wěn)定樹或開發(fā)樹,用于產(chǎn)品開發(fā)、改良、測試。源代碼版本序號方式:為x.y.zz構(gòu)造,其中x為主版本號,代表中心的改動晉級;y為次版本號,表示功能性的改動

3、;zz為末版本號,表示BUG的改動。其中x介于0到9之間,yy和zz那么介于0到99之間。雙樹區(qū)分:對于穩(wěn)定樹來說,y是偶數(shù);對于開發(fā)樹來說,y是比相應(yīng)穩(wěn)定樹大1的奇數(shù)。例2.4.18等為穩(wěn)定內(nèi)核版本。Linux的內(nèi)核版本嵌入式Linux操作系統(tǒng)概述一、嵌入式Linux操作系統(tǒng)嵌入式Linux是按照嵌入式操作系統(tǒng)的要求而設(shè)計的一種小型操作系統(tǒng)。由一個內(nèi)核及一些根據(jù)需求進展定制的系統(tǒng)模塊組成。其kernel很小,普通只需幾百kB左右。即使加上其它必需的模塊和運用程序,所需的存儲空間也很小。它具有多義務(wù)、多進程的系統(tǒng)特征,有些還具有實時性 。嵌入式Linux需求移植:對于嵌入式Linux,普通都不

4、是原封不動地運用,而是要思索各種詳細(xì)系統(tǒng)的特點,有針對性地對Linux內(nèi)核加以裁減、修正和補充。下面是嵌入式Linux 的根本表示圖:BootLoader內(nèi)核初始化設(shè)備驅(qū)動程序文件系統(tǒng)網(wǎng)絡(luò)模塊Boot LoaderBoot Loader:擔(dān)任Linux 內(nèi)核的啟動,它用于初始化系統(tǒng)資源,包括SDRAM。這部分代碼用于建立Linux 內(nèi)核運轉(zhuǎn)環(huán)境和從Flash 中裝載初始化ramdisksteppingstone。內(nèi)核初始化內(nèi)核初始化:Linux 內(nèi)核的入口點是start_kernel函數(shù)。它初始化內(nèi)核的其它部分,包括捕獲異常,IRQ 通道,調(diào)度,設(shè)備驅(qū)動,標(biāo)定延遲循環(huán),最重要的是可以fork

5、創(chuàng)建“init進程,以啟動整個多義務(wù)環(huán)境。系統(tǒng)調(diào)用函數(shù)/捕獲函數(shù):在執(zhí)行完“init程序后,內(nèi)核對程序流不再有直接的控制權(quán),以后,它的作用僅僅是處置異步事件(例如硬件中斷)和為系統(tǒng)調(diào)用提供進程。設(shè)備驅(qū)動設(shè)備驅(qū)動:設(shè)備驅(qū)動占據(jù)了Linux 內(nèi)核很大部分。同其它操作系一致樣,設(shè)備驅(qū)動為它們所控制的硬件設(shè)備和操作系統(tǒng)提供接口。設(shè)備驅(qū)動包括:字符型設(shè)備驅(qū)動,塊設(shè)備驅(qū)動,網(wǎng)絡(luò)設(shè)備驅(qū)動文件系統(tǒng):Linux 最重要的特性之一就是對多種文件系統(tǒng)的支持。如EXT2、EXT3、FAT、VFAT、ISO9660、NFS、SMB.這種特性使得Linux 很容易地同其它操作系統(tǒng)共存。文件系統(tǒng)的概念使得用戶可以查看存儲設(shè)

6、備上的文件和途徑而無須思索實踐物理設(shè)備的文件系統(tǒng)類型。Linux 透明的支持許多不同的文件系統(tǒng),將各種安裝的文件和文件系統(tǒng)以一個完好的虛擬文件系統(tǒng)的方式呈現(xiàn)給用戶。5.3.1 Linux文件系統(tǒng)概述文件構(gòu)造是文件存放在磁盤等存貯設(shè)備上的組織方法。文件構(gòu)造主要表達在對文件和目錄的組織上。目錄提供了管理文件的一個方便而有效的途徑。linux運用規(guī)范的目錄構(gòu)造,在安裝的時候,安裝程序就曾經(jīng)為用戶創(chuàng)建了文件系統(tǒng)和完好而固定的目錄組成方式,并指定了每個目錄的作用和其中的文件類型 Linux目錄構(gòu)造Linux與DOS文件系統(tǒng)區(qū)別Linux文件系統(tǒng)是一個目錄樹構(gòu)造,最上層是根目錄,其他的一切目錄都是從根目錄

7、出發(fā)而生成的。 Dos文件系統(tǒng)也采用目錄樹的構(gòu)造,但DOS以每個分區(qū)為樹根,有幾個分區(qū)就有幾個樹型構(gòu)造 。/sbin /usr /etc /root /lib /hom /mnt/ C D ELinux下,任何一個目錄都可以是一個分區(qū)。因此,在分區(qū)時,必需將一個分區(qū)安裝在樹根下面。Linux不僅將分區(qū)安裝為一個目錄,而且還將一切的硬件設(shè)備都安裝成一個個設(shè)備文件。對設(shè)備的操作是經(jīng)過文件的操作完成的。Linux文件系統(tǒng)構(gòu)造“/根目錄: 包含根本的操作系統(tǒng)和維護工具。這個目錄的文件可以啟動系統(tǒng),并且需求的話,可以完成緊急維護和修復(fù)的功能。“/root目錄: 系統(tǒng)管理員也叫超級用戶或根用戶的Home目

8、錄?!?usr目錄: 包含一切的命令、程序庫、文檔和其它文件。這些文件在正常操作中不會被改動的。這個目錄也包含他的Linux發(fā)行版本的主要的運用程序。/usr/bin, /bin:普通性執(zhí)行程序放置的地方/usr/sbin, /sbin:系統(tǒng)管理員常用的指令集“/home目錄: 包含用戶的文件:參數(shù)設(shè)置文件、個性化文件、文檔、數(shù)據(jù)、緩存數(shù)據(jù)等。這個目錄在系統(tǒng)晉級時應(yīng)該保管?!?mnt目錄: 普通用降暫時掛載別的文件系統(tǒng),如FAT32,NTFS等“/bin目錄: 系統(tǒng)啟動時需求的執(zhí)行文件二進制,這些文件可以被普通用戶運用?!?sbin目錄: 系統(tǒng)執(zhí)行文件二進制,這些文件不計劃被普通用戶運用。普通

9、用戶依然可以運用它們,但要指定目錄?!?etc目錄: 操作系統(tǒng)的配置文件目錄。/etc/rc.d/init.d:系統(tǒng)開機的時候載入的 效力程序的scripts 的放置點“/dev目錄: 設(shè)備文件目錄。LINUX下設(shè)備被當(dāng)成文件,正常情況下,設(shè)備會有一個獨立的子目錄。這些設(shè)備的內(nèi)容會出如今獨立的子目錄下?!?lib目錄:根文件系統(tǒng)目錄下程序和中心模塊的共享庫?!?var目錄: 存放在操作中被改動的文件:假脫機文件、記錄文件、加鎖文件、暫時文件和頁格式化文件等?!?boot目錄: 用于啟動加載程序的文件。當(dāng)計算機啟動時假設(shè)有多個操作系統(tǒng),有能夠允許他選擇啟動哪一個操作系統(tǒng),這些文件首先被裝載。這個

10、目錄也會包含Linux核緊縮文件 vmlinuz。但Linux核也可以存在別處,只需配置LILO并且LILO知道Linux核在哪兒。用于啟動加載程序LILO或GRUB“/opt目錄: 可選的運用程序。譬如,REDHAT 5.2下的KDE REDHAT 6.0下,KDE放在其它的X-WINDOWS運用程序中,主執(zhí)行程序在/usr/bin目錄下“/tmp目錄 :暫時文件。該目錄會被自動清理干凈?!?lost+found目錄: 在文件系統(tǒng)修復(fù)時恢復(fù)的文件。Linux的文件類型文件名Linux文件的名字可以由字母字符、下劃線和數(shù)字組成,也可以加上句號和逗號。文件名的第一個字符不能是數(shù)字,短劃線、句點和

11、星號等被系統(tǒng)用作特殊符號的其他符號。用“.開場的文件為隱藏文件,稱為“點文件??捎谩癴ile 文件名來查看文件類型。(1)、緊縮的和歸檔的文件.bz2 運用 bzip2 緊縮的文件 . gz 運用 gzip 緊縮的文件.tar 運用 tartape archive,磁帶歸檔的簡寫緊縮的文件,又稱 tar 文件.tbz 用 tar 和 bzip 緊縮的文件.tgz 用 tar 和 gzip 緊縮的文件.zip 運用 ZIP 緊縮的文件,在 MS-DOS 運用程序中常見。多數(shù)為 Linux 緊縮的文件運用 gzip 緊縮,因此 Linux 文件中的 .zip 歸檔較少見。 2、 文件格式.au 音

12、頻文件.gif GIF 圖像文件.html/.htm HTML 文件.jpg JPEG 圖像文件.pdf 文檔的電子映像;PDF 代表 Portable Document Format可移植文檔格式 .png PNG 圖像文件Portable Network Graphic 的簡寫,可移植網(wǎng)絡(luò)圖形 .ps PostScript 文件,為打印而格式化過的文件.txt 純 ASCII 文本文件.wav 音頻文件.xpm 圖像文件(3)、系統(tǒng)文件. .conf 一種配置文件。配置文件有時也運用 .cfg。 .lock 鎖lock 文件;用來斷定程序或設(shè)備能否正在被運用.rpm Red Hat 用來安

13、裝軟件的軟件包管理器文件(4)、編程和腳本文件.c C 程序文語的源碼文件.cpp C+ 程序文語的源碼文件.h C 或 C+ 程序文語的頭文件.o 程序的對象文件.pl Perl 腳本.py Python 腳本 .so 庫文件.sh shell 腳本 .tcl TCL 腳本常用的Linux文件系統(tǒng) Linux系統(tǒng)中心支持十多種文件系統(tǒng)類型: ext、ext2、ext3、CRAMFS、msdos、umsdos、Vfat、NTFS等。 minix linux:最早運用的文件系統(tǒng) ext2 linux和ext3 linux:目前常用的文件系統(tǒng) nfs: 網(wǎng)絡(luò)文件系統(tǒng) cramfs: 只讀文件系統(tǒng)主

14、要內(nèi)容1、Linux外殼shell2、Linux常用命令Linux常用命令Linux外殼的功能:shell是一種命令解釋器,提供了用戶和操作系統(tǒng)之間的交互接口。對用戶輸入的命令,由外殼進展解釋,然后將解釋的命令送到操作系統(tǒng)去執(zhí)行。shell可以執(zhí)行Linux的系統(tǒng)命令,也可以執(zhí)行運用程序。用戶還可以利用外殼編程,執(zhí)行復(fù)雜的命令程序。Linux有多種shell,為用戶提供選擇。Linux外殼shell常用的shell:bash、ash、csh、ksh、tcsh等。bash是Linux默許運用的shell,它由Brian Fox 和 Chet Ramey共同完成的。 bash是Bourne Aga

15、in Shell的縮寫,內(nèi)部命令有40個。Bash有如下特點:1運用方向鍵查閱已運用過的命令行。2補全命令行,按Tab鍵。3可以運用通配符“?、“*。4有管道命令“|,用“|可將多個命令銜接起來執(zhí)行,前面命令的輸出是后者的輸入。1、ls-文件及子目錄名列表語法格式:ls option file 如:ls 以默許方式顯示當(dāng)前目錄下的子目錄和文件。ls a 顯示一切文件,包括隱藏文件。ls l 以默許方式顯示文件屬性,包括大小、日期、一切者、權(quán)限及稱號。 ls F以默許方式顯示文件及類型,以“/結(jié)尾的為目錄,以“*結(jié)尾的為可執(zhí)行文件,以“結(jié)尾的為符號鏈接。Linux常用命令屬性文件數(shù)量一切者文件屬

16、性符號 格式:arwxrwxrwx n owner group size date name 例如:drwxr-xr-x 2 root root 4096 2021-3-3 bina:文件性質(zhì),可以是:d:目錄文件; n:l:符號鏈接文件; (1)對文件指硬銜接數(shù)b:塊類型設(shè)備文件; (2)對目錄指含的子目錄數(shù)c:字符型設(shè)備文件。r:read,讀w:write,寫x:execute,執(zhí)行紅色:文件擁有者權(quán)限黑色:文件組擁有者權(quán)限藍色:其他用戶的權(quán)限13 chmod更改訪問權(quán)限chmod用于改動文件或目錄的訪問權(quán)限。用戶用它控制文件或目錄的訪問權(quán)限。該命令有兩種用法。一種是包含字母和操作符表達式

17、的文字設(shè)定法;另一種是包含數(shù)字的數(shù)字設(shè)定法。 1. 文字設(shè)定法 語法:chmod who + | - | = mode 文件名例如: chmod g+r,o+r example操作對象who可是下述字母中的任一個或者它們的組合: u 表示“用戶user,即文件或目錄的一切者。 g 表示“同組group用戶,即與文件屬主有一樣組ID的一切用戶。 o 表示“其他others用戶。 a 表示“一切all用戶。它是系統(tǒng)默許值。 操作符號可以是: + :添加某個權(quán)限。 - :取消某個權(quán)限。 = :賦予給定權(quán)限并取消其他一切權(quán)限設(shè)置 mode 所表示的權(quán)限可用下述字母的恣意組合: r 可讀、 w 可寫、

18、x 可執(zhí)行 其他省略語法:chmod who + | - | = mode 文件名文件名:以空格分開的要改動權(quán)限的文件列表,支持通配符。 在一個命令行中可給出多個權(quán)限方式,其間用逗號隔開。例如: chmod g+r,o+r example % 使同組和其他用戶對文件example 有讀權(quán)限。2. chmod數(shù)字設(shè)定法我們必需首先了解用數(shù)字表示的屬性的含義:0表示沒有權(quán)限,1表示可執(zhí)行權(quán)限, 2表示可寫權(quán)限,4表示可讀權(quán)限,然后將其相加。所以數(shù)字屬性的格式應(yīng)為3個從0到7的八進制數(shù),其順序是ugo。 例如,假設(shè)想讓某個文件的屬主有“讀/寫二種權(quán)限,需求把4可讀+2可寫6讀/寫。 數(shù)字設(shè)定法的普通

19、方式為: 語法:chmod mode 文件名 比如 chmod 777 example;%表示用戶同組用戶其他用戶對文件example具有可讀可寫執(zhí)行的權(quán)限比如 chmod 755 example;%表示用戶對文件example具有可讀可寫執(zhí)行的權(quán)限,同組用戶其他用戶只具有執(zhí)行和可讀的權(quán)限3、cd-改動任務(wù)目錄目錄切換語法格式:cd directory如:cd dir 切換到當(dāng)前目錄下的dir 目錄。cd / 切換到根目錄。cd . 切換到上一級目錄。cd /abc切換到當(dāng)前目錄下的某目錄下的abc目錄。幾個符號目錄: “/:根目錄“.:本級目錄;“.:上級目錄4、cp-復(fù)制文件和目錄語法格式

20、:cp 源文件及途徑 目的文件及途徑 cp -r 源目錄 目的目錄如:cp file1 file2 將文件file1復(fù)制成file2。cp /root/file .將/root目錄下的文件file 復(fù)制到當(dāng)前目錄下,名字仍為file 。 cp file /usr 將當(dāng)前目錄下的文件file 復(fù)制到/usr目錄下,名字仍為file 。cp r dir1 dir2 將dir1下的文件和目錄,全部復(fù)制到dir2目錄下。5、 rm-刪除文件 語法格式:rm filename如:rm file1刪除當(dāng)前目錄下的file1文件rm *.c刪除當(dāng)前目錄下的一切c文件rm abc.*刪除當(dāng)前目錄下主文件名為a

21、bc的一切文件。rm *刪除當(dāng)前目錄下的一切文件6、mv-挪動或更改文件、目錄名語法格式:mv 源地址 目的地址如:mvfile1 file2將文件file1更改為file2mvfile1 dir2將文件file1挪動到目錄dir2下,文件名仍為file1。mvdir1 dir2將目錄dir1更改為dir2。7、建立目錄語法格式:mkdir option目錄名如:mkdir dir1在當(dāng)前目錄下建立新目錄dir1。mkdir dir1/dir2 在當(dāng)前目錄下的dir1目錄下建立新目錄dir2。mkdir -p dir3/dir4 在當(dāng)前目錄下先建立新目錄dir3 ,然后在dir3下建立新目錄d

22、ir4。8、刪除目錄語法格式:rmdir 目錄名 rm r 目錄名如:rmdir dir1刪除目錄dir1dir1下必需為空。rm r dir2刪除目錄dir2及其子目錄下一切文件。2、查看文件內(nèi)容命令1cat-延續(xù)顯示格式:cat filename如:cat file1以延續(xù)方式顯示file1內(nèi)容cat file2 | more以分頁方式顯示file2內(nèi)容2more-分頁顯示格式:more filename按空格查看下一頁,按回車下一行。3less-分頁并且可往回查看格式:less filename按“空格查看下一頁;按“b查看上一頁;按“回車下一行;按“q鍵退出。10、ln-文件鏈接1硬鏈

23、接語法格式:ln 源文件名及途徑 目的文件名及途徑如:ln file1 dir2/file2將當(dāng)前目錄下file1,鏈接到當(dāng)前目錄下的dir2下,名為file2ln dir3/file3 file4將當(dāng)前目錄下的dir3目錄下的file3,鏈接到當(dāng)前目錄下,名為file4刪除方法:用rm命令2符號鏈接相當(dāng)于Win2k的快捷方式語法格式:ln s 源文件名及途徑 目的文件名及途徑如:ln -s file1 dir2/file2 將當(dāng)前目錄下的文件file1,鏈接到當(dāng)前目錄下的dir2目錄下,文件名為file2。ln s dir3/file3 file4將當(dāng)前目錄下dir3目錄下的文件file3,

24、鏈接到當(dāng)前目錄下,文件名為file4。刪除方法:用rm命令11、 tar-緊縮與解壓語法格式: tar -參數(shù)(必選)+參數(shù)(可選) 目的文件 (.tar .gz) 源文件/目錄 主選項c 創(chuàng)建檔案文件r 追加文件到創(chuàng)建好的檔案文件末尾t 列出檔案文件包含的文件u 更新檔案文件,假設(shè)有那么覆蓋,沒有那么追加末尾x 釋放檔案文件輔助選項b 磁帶機公用 塊大小20(20*512bytes)f 必需選項k 緊縮/解緊縮過程中保管同名文件m 復(fù)原文件時,修正文件時間為當(dāng)前時間M 創(chuàng)建多卷文件v 顯示處置信息w 每一步都要求確認(rèn)z 用gzip緊縮/解緊縮文件11、 tar-緊縮與解壓 1緊縮文件語法格式

25、: tar cfzv 目的文件途徑 被緊縮的目錄如:tar cfzv dir1/file1.tgz dir2 將當(dāng)前目錄下的dir2目錄下的一切文件,緊縮為文件file.tgz,存放在當(dāng)前目錄下的dir1目錄下。闡明:選項4個字母cfzv,不分次序。2解壓文件tar xfzv 被解壓的文件途徑 保管的目錄tar xfzv file.tgz dir1將文件file.tgz 解壓,保管到當(dāng)前目錄下的dir1目錄下。闡明:選項4個字母xfzv,不分次序?qū)嵗?tar -cf mydir.tar mydir #將mydir目錄下一切文件打包到mydir.tar#tar -uf mydir.tar myd

26、ir#更新mydir.tar#tar -tf mydir.tar#顯示mydir.tar內(nèi)的文件#tar -cf /dev/fd0 mydir#用設(shè)備稱號作檔案名#tar -xf /dev/fd0 # 恢復(fù)軟盤中的文件12、磁盤、目錄掛接與卸載1mount-掛接語法格式:mount option 被掛接的設(shè)備 掛接點mount IP地址:被掛接的目錄 掛接點option:文件類型:二進制、文本、可執(zhí)行等如:mount -t yaffs /dev/mtdblock/0 /mnt 把/dev/mtdblock/0 裝載到 /mnt 目錄mount -t nfs :/frien

27、dly-arm/root /mnt 將nfs 效力的共享目錄/friendly-arm/root 掛接到/mnt 目錄2umount-卸載語法格式:umount 被掛接目錄或掛接點掛載文件系統(tǒng)將一個文件系統(tǒng)的頂層目錄掛到另一個文件系統(tǒng)的子目錄上,使它們成為一個整體,稱為掛載。把該子目錄稱為掛載點。當(dāng)一個機器上裝了多個操作系統(tǒng),比如在Linux任務(wù)時需訪問Windows下的C盤,那么需求在Linux上掛載采用mount命令掛載,umount命令卸載。為防止每次系統(tǒng)啟動時都掛接,可寫入相應(yīng)命令到/etc/fstab。加掛FAT32系統(tǒng)首先進入/mnt目錄,新建所掛接分區(qū)對應(yīng)目錄,例winDmoun

28、t t vfat o iocharset=cp936 /dev/hda2 /mnt/winD 其中,hda2為D盤對應(yīng)的設(shè)備文件,可經(jīng)過“fdisk l命令或“系統(tǒng)工具/硬件閱讀器中查看各盤對應(yīng)的設(shè)備文件。加掛ntfs系統(tǒng)-t ntfs加掛U盤上的文件系統(tǒng)mount t vfat o iocharset=cp936 /dev/sda1 /mnt/udiskpwd(printworkingdirectory)功能闡明:顯示任務(wù)目錄。語法:pwd-help-version補充闡明:執(zhí)行pwd指令可立刻得知您目前所在的任務(wù)目錄的絕對途徑稱號。參數(shù):-help在線協(xié)助。-version顯示版本信息。例

29、子:/root# pwd (回車) /root# /rootexport功能闡明:設(shè)置或顯示環(huán)境變量。例子: /root# export lib_dir=/usr/lib/bin語法:export-fnp變量稱號=變量設(shè)置值補充闡明:在shell中執(zhí)行程序時,shell會提供一組環(huán)境變量。export可新增,修正或刪除環(huán)境變量,供后續(xù)執(zhí)行的程序運用。export的效能僅及于該此登陸操作。參數(shù):-f代表變量稱號中為函數(shù)稱號。-n刪除指定的變量。變量實踐上并未刪除,只是不會輸出到后續(xù)指令的執(zhí)行環(huán)境中。-p列出一切的shell賦予程序的環(huán)境變量。12、shell運用手冊-man對于Linux的命令,

30、隨時可以運用隨機所帶的運用手冊獲得協(xié)助。獲得協(xié)助方法:man 命令名如:mancp 13、Linux運用程序的協(xié)助-help對于Linux的運用程序,可以運用各個運用的協(xié)助功能-help,獲得協(xié)助。獲得協(xié)助方法:運用程序名 -help如:gcc -helpLinux命令大全linux.chinaitlab/special/linuxcom/3.2 Windows下的Linux環(huán)境軟件-Cygwin主要內(nèi)容1、 Cygwin 軟件功能2、 Cygwin 軟件下載3、 Cygwin 軟件安裝3.2.1 Cygwin軟件功能Cygwin是一個在Windows平臺上運轉(zhuǎn)的、模擬Linux環(huán)境的軟件,并

31、且該軟件也將GNU工具移植到了Win32系統(tǒng)上。可以將Cygwin了解成一個DLL.安裝了Cygwin后,啟動Cygwin,Windows系統(tǒng)就模擬出一部Linux主機,用戶便可像在純Linux下一樣運用Linux及其各種工具軟件、運用軟件等。工具包括Bash shell等常用工具.該軟件對于剛開場運用Linux的人來說,是極好的選擇,用戶可以方便地回到Windows下查看文件和目錄構(gòu)造,也可以在Windows下進展各種文件操作,如復(fù)制刪除文件、挪動文件、解壓文件、查找文件等。3.2.2 Cygwin軟件下載Cygwin是Cygwin solutions公司開發(fā)的自在軟件,可以到公司網(wǎng)站上免費

32、下載,包括Cygwin和各種開發(fā)工具的源代碼程序 。Cygwin solutions公司的網(wǎng)址是: cygwin/。 在網(wǎng)頁上單擊“Install Cygwin Now,會先下載一個叫做setup.exe的安裝程序,運轉(zhuǎn)Cygwin目錄下的“setup.exe,會出現(xiàn)一個下載安裝的界面.有三項:“Intall from Internet、“Download without Intalling、“Intall from Local Directory,普通應(yīng)選擇第二項,先下載,再安裝,不進展直接安裝。 有三項:“Intall from Internet、“Download without Int

33、alling、“Intall from Local Directory,普通應(yīng)選擇第二項,先下載,再安裝,不進展直接安裝。 1、啟動安裝再次運轉(zhuǎn)Cygwin目錄下的“setup.exe,選擇第三項“Intall from Local Directory,進展本地安裝。P613.2.3 Cygwin軟件安裝2、選擇安裝、運用范圍當(dāng)出現(xiàn)如下界面時,1需求選擇安裝目錄,普通不安裝在C盤,留意磁盤空間應(yīng)不少于2GB;2選擇運用范圍和文本文件類型,選擇默許項:“All Users、“Unix 即可。3、選擇安裝軟件包每種軟件包有“Default、“Install、“Reinstall、“Uninstal

34、l4種安裝選擇,可以根據(jù)需求逐一選擇。普通可以做如下選擇: 1選擇All 為“Default2對如下軟件包選擇“Install:Admin:根本效力工具 Archive:緊縮、解壓工具 Base:根本的Linux工具 Libs:系統(tǒng)庫文件 Net:網(wǎng)絡(luò)工具 Untils:適用工具Shall:外殼工具集 Editor:編輯器集3.4交叉編譯預(yù)備知識1交叉編譯器概述交叉編譯就是在一個平臺上生成可以在另一個平臺上執(zhí)行的代碼。留意這里的平臺,實踐上包含兩個概念:體系構(gòu)造(Architecture)、操作系統(tǒng)(Operating System)。同一個體系構(gòu)造可以運轉(zhuǎn)不同的操作系統(tǒng);同樣,同一個操作系統(tǒng)

35、也可以在不同的體系構(gòu)造上運轉(zhuǎn)。舉例來說,我們常說的x86 Linux 平臺實踐上是Intel x86 體系構(gòu)造和Linux for x86 操作系統(tǒng)的統(tǒng)稱;而x86 WinNT 平臺實踐上是Intel x86 體系構(gòu)造和Windows NT for x86 操作系統(tǒng)的簡稱。1、采用交叉編譯的主要緣由:多數(shù)嵌入式目的機不能提供足夠的資源供編譯過程運用,因此只好將編譯任務(wù)轉(zhuǎn)移到高性能的宿主機中進展。2、編譯環(huán)境:即創(chuàng)建交叉編譯工具的編譯環(huán)境是一個由編譯器、銜接器和解釋器組成的綜合開發(fā)環(huán)境。3、交叉編譯工具鏈:交叉編譯工具鏈主要包括針對目的系統(tǒng)的編譯器 gcc、目的系統(tǒng)的二進制工具binutils、

36、目的系統(tǒng)的規(guī)范c庫glibc和目的系統(tǒng)的 Linux 內(nèi)核頭文件。3.4交叉編譯預(yù)備知識3.4交叉編譯預(yù)備知識我們接下來所要運用的是ARM-Linux2.6平臺,闡明我們的體系構(gòu)造是ARM,而操作系統(tǒng)為Linux2.6而對應(yīng)的目的平臺還有MIPS,SuperH、POWERPC等而所涉及到的目的硬件S3C2410 而言,之所以運用交叉編譯是由于在該硬件上無法安裝我們所需的編譯器,只好借助于宿主機(PC機),在宿主機(PC機)上對即將運轉(zhuǎn)在目的機上的運用程序進展編譯,生成可在目的機上運轉(zhuǎn)的代碼格式。宿主機普通是一個基于X86架構(gòu)的計算機,我們統(tǒng)稱為i386平臺。GNU 工具簡介下面引見在嵌入式系統(tǒng)

37、開發(fā)中用得最多的GNU 開發(fā)工具。GNU 開發(fā)工具包括C 編譯器GCC,C+編譯器G+,匯編器AS,鏈接器LD,二進制轉(zhuǎn)換工具(OBJCOPY,OBJDUMP),調(diào)試工具(GDB,GDBSERVER,KGDB) 和基于不同硬件平臺的開發(fā)庫。在GNU GCC 支持下用戶可以運用流行的C/C+言語開發(fā)運用程序,滿足生成高效率運轉(zhuǎn)代碼、易掌握的編程言語的用戶需求。這些工具都是按GPL版權(quán)聲明發(fā)布,任何人可以從網(wǎng)上獲取全部的源代碼,無需運用任何費用。關(guān)于GNU 和公共答應(yīng)證協(xié)議的詳細(xì)資料, 讀者可以參看GNU 網(wǎng)站的引見,/home.html。運轉(zhuǎn)于Linux 操作系統(tǒng)下的自在軟件GNU

38、 gcc 編譯器,不僅可以編譯Linux 操作系統(tǒng)下運轉(zhuǎn)的運用程序,還可以編譯Linux 內(nèi)核本身。甚至可以作交叉編譯,編譯運轉(zhuǎn)于其它CPU上的程序。在這里我們用的是arm-linux-工具鏈。如arm-linux-gcc和arm-linux-g+主要內(nèi)容1、vim概述2、vim的啟動3、vim的任務(wù)方式Linux文本編輯器vimvim概述vim是Linux的全屏幕編輯器,是vi Visual interface的加強型版本,用它可以進展文本文件的編輯、數(shù)據(jù)文件編輯,也用它做源程序的編輯。類似于Windows/ DOS下的EDIT編輯器。Vim可以執(zhí)行輸出、刪除、查找、交換、塊操作等眾多文本操

39、作。Vim的啟動有兩種方法:1vim回車啟動vim,并且翻開一個新文件。2vimfile回車啟動vim,并且翻開file文件,假設(shè)file不存在,那么創(chuàng)建file文件。vim的任務(wù)方式vim有三種任務(wù)方式:命令行方式、文本輸入方式、末行方式。一、命令行方式1、命令行方式的功能就是vim以為從鍵盤輸入的是命令,完成各種編輯操作。留意:1在該方式下,從鍵盤一切輸入的命令,都不在屏幕上顯示出來;2假設(shè)輸入的不是合法命令那么響鈴報警。二、文本輸入方式在該方式下從鍵盤輸入的均作為編輯的內(nèi)容。 三、末行命令方式在屏幕的末行有“:符號,輸入的命令在末行顯示,按回車執(zhí)行命令。二、文本輸入方式在該方式下從鍵盤輸

40、入的均作為編輯的內(nèi)容。文本輸入方式進入方法運用一切的“添加文本命令和“改動和交換命令后,均切換到文本輸入方式。最常用的是“a命令和“i命令:a:在光標(biāo)位置后添加文本i:在光標(biāo)位置前添加文本三、末行命令方式在屏幕的末行有“:符號,輸入的命令在末行顯示,按回車執(zhí)行命令。1、進入末行命令方式的方法在命令方式下按“:鍵,便進入末行命令方式。2、退出末行方式的方法一個末行命令執(zhí)行完后,便自動回到命令行方式。3、末行方式的功能與命令功能有二:保管文件、退出編輯器。末行方式的命令如下:1保管和寫文件命令:w將緩沖區(qū)的內(nèi)容寫到文件:w 文件名將緩沖區(qū)的內(nèi)容寫到指定文件:w!文件名強迫覆蓋寫曾經(jīng)存在的文件2退出

41、編輯器命令:q未修正那么退出,做過修正那么提示保管:q!不保管退出:x保管后退出總做保管 對:q有提示時,假設(shè)不保管退出,再進入末行方式,:q!;假設(shè)保管退出,可輸入Z、Z,或再進入末行方式,:x2、進入命令行的方法1啟動Vim時自動進入;2在其它方式時按“ESC鍵進入。3、命令行命令1退出編輯器Z、Z:保管所編輯的內(nèi)容,退出vim,前往到shell。2添加文本命令a:在光標(biāo)位置后添加文本shift+a:在當(dāng)前行末添加文本i:在光標(biāo)位置前添加文本shift+i:在當(dāng)前行前面添加文本o:在當(dāng)前行下翻開一行添加文本shift+o:在當(dāng)前行上翻開一行添加文本3塊復(fù)制命令V/v:塊開場Y/y:塊終了并

42、復(fù)制P/p:塊粘貼4刪除文本x:刪除光標(biāo)位置的字符d、$:從當(dāng)前光標(biāo)位置刪除到行尾d、d:刪除當(dāng)前行shift+d:刪除當(dāng)前行的剩余部分5改動和交換命令r:交換一個字符shift+r:交換字符序列c、w:把當(dāng)前字從光標(biāo)位置改動到字尾c、e:同上c、b:把當(dāng)前字從字的開場改動到光標(biāo)的前一個字符c、$:把一行從光標(biāo)位置改寫到行尾shift+c:同上c、c:改動整行主要內(nèi)容1、編譯器gcc2、編譯工具make命令和makefile文件Linux編譯器gcc及編譯工具3.4.3 Linux編譯器gcc p93gcc的是GNU C Compiler 的縮寫,由 Richard Stallman開發(fā)。是我

43、們這套工具鏈的主角. 經(jīng)過多年的開展,gcc不僅僅支持C言語,還支持Adc言語、C+言語、Java言語、pascal言語、COBOL言語等等。變成了GNU Compiler Collection,即GMU編譯器集。 gcc對于各種硬件平臺都提供了完善的支持。 gcc是GNU組織的免費C編譯器。 由gcc編譯所生成的代碼執(zhí)行效率較高,平均效率高出20-30%。gcc的功能gcc的整個編譯過程,本質(zhì)上是分四步進展的,每一步完成一個特定的任務(wù),這四步分別是:預(yù)處置(也稱預(yù)編譯,Preprocessing)編譯(Compilation)匯編(Assembly) 銜接(Linking) 普通來說開發(fā)人員

44、要做的只是提供源代碼,其他任務(wù)都可以由gcc完成. 詳細(xì)完成哪一步,是由gcc后面的開關(guān)選項和文件類型決議的。gcc所包含的工具cc :C編譯器cpp :C預(yù)處置器。編譯器用它來將#include和#define 這類聲明在源文件中展開。 g+ :C+編譯器 gcc :C編譯器 gccbug :一個shell腳本,協(xié)助創(chuàng)建有價值的bug報告。 gcov :覆蓋測試工具,用來分析在程序的哪里做優(yōu)化的效果最好。libgcc gcc:的運轉(zhuǎn)時庫 libstdc+ :準(zhǔn)C+庫,包含許多常用的函數(shù)。libsupc+ :為C+言語提供支持的庫函數(shù)。1、命令gcc首先調(diào)用cpp進展預(yù)處置,在預(yù)處置過程中,對

45、源代碼文件中的文件包含(include)、預(yù)編譯語句(如宏定義define等)進展分析。2、接著調(diào)用cc進展編譯,這個階段根據(jù)輸入文件生成以.o為后綴的目的文件。3、匯編過程是針對匯編言語的步驟,調(diào)用as進展任務(wù),普通來講, 以.s和.S的匯編言語源代碼文件經(jīng)過預(yù)編譯的匯編言語源代碼文件都生成以.o為后綴的目的文件。4、當(dāng)一切的目的文件都生成之后,gcc就調(diào)用ld來完成最后的關(guān)鍵性任務(wù),這個階段就是銜接。在銜接階段,一切的目的文件被安排在可執(zhí)行程序中的恰當(dāng)?shù)奈恢?,同時,該程序所調(diào)用到的庫函數(shù)也從各自所在的檔案庫中連到適宜的地方。二、gcc運用格式gcc的格式為:gcc option fileg

46、cc編譯器有許多項選擇項,但對于普通用戶來說只需知道其中常用的幾個就夠了。下面為幾個最常用的選項:-o 表示要求編譯器生成所指定名字的可執(zhí)行文件必需指定名字;-c 表示只需求編譯器進展編譯和匯編,而不要求鏈接,生成后綴為.o的同名的目的文件不需求指定名字;編輯源程序,文件名為Hello.cvoid main()printf(“Hello the world!n);1gcc o hello hello.c對hello.c進展編譯鏈接,生成可執(zhí)行文件hello.exe。需求輸入目的文件名。 2gcc c hello.c只對hello.c進展編譯、匯編,不鏈接。產(chǎn)生的目的文件為hello.o。三、g

47、cc運用舉例 -g 要求編譯器在編譯的時候,產(chǎn)生對程序進展調(diào)試的信息;不用輸入所產(chǎn)生的可執(zhí)行文件名,自動生成a.exe例如:gcc g hello.c編譯時產(chǎn)生調(diào)試信息,也產(chǎn)生了可執(zhí)行文件a.exe。不需求輸入目的文件名。 -E 表示編譯器對源文件只進展預(yù)處置就停頓,而不做編譯、匯編和鏈接; -S 表示編譯器只進展編譯,而不做匯編和鏈接; 不需求輸入目的文件名例如: gcc S hello.c只對hello.c編譯,產(chǎn)生了匯編言語文件hello.s。不需求輸入目的文件名。 -O 是編譯器對程序提供的編譯優(yōu)化選項,可以提高執(zhí)行文件的運轉(zhuǎn)效率;例如 : gcc O hello.c優(yōu)化編譯,并且產(chǎn)生

48、了可執(zhí)行文件a.exe。不需求輸入目的文件名。 -Wall 指定產(chǎn)生全部的警告信息。 例如 : gcc Wall hello.c產(chǎn)生全部警告信息,同時產(chǎn)生了可執(zhí)行文件a.exe。不需求輸入目的文件名。輸入文件的類型gcc是經(jīng)過后綴名來區(qū)別輸入文件的類型,下面是gcc所遵照的部分商定規(guī)那么。c為后綴的文件,C言語源代碼文件; .a為后綴的文件,是由目的文件構(gòu)成的檔案庫文件;.C,.cc或.cxx 為后綴的文件,是C+源代碼文件;.h為后綴的文件,是程序所包含的頭文件; .i 為后綴的文件,是曾經(jīng)預(yù)處置過的C源代碼文件;.ii為后綴的文件,是曾經(jīng)預(yù)處置過的C+源代碼文件;.m為后綴的文件,是Obj

49、ective-C源代碼文件; .o為后綴的文件,是編譯后的目的文件;.s為后綴的文件,是匯編言語源代碼文件;.S為后綴的文件,是經(jīng)過預(yù)編譯的匯編言語源代碼文件。 gcc所生成的目的文件格式所生成的為可執(zhí)行文件,Linux有兩種可執(zhí)行文件:ELFa.exe和a.out。ELFExecutive linked file為可執(zhí)行鏈接文件,是一種新規(guī)范,功能更強大。文件的擴展名為 .exe。ELF為Linux的默許格式 交叉編譯命令gcc基于命令行的。當(dāng)作為交叉編譯工具運用時,gcc支持很多種的平臺和“宿主機目的機的組合。對應(yīng)交叉編譯,常用的命令就是arm-linux-gcc 。這樣,當(dāng)用C言語寫好一

50、個運用程序時,運用此命令就是以生成可以在目的平臺上執(zhí)行的可執(zhí)行文件,經(jīng)過超級終端執(zhí)行后,就可以在目的板上看到程序的結(jié)果。3.4.1 GNU make工具3.4.1 GNU make工具什么是Makefile 文件?在大型的開發(fā)工程中,通常有幾十個到上百個的源文件,假設(shè)每次均手工鍵入gcc命令進展編譯,會非常不方便。Linux專門為軟件開發(fā)提供了一個自動化的管理工具GNU Make。Make的主要任務(wù)是讀取Makefile文件的內(nèi)容。該文件描畫了目的文件之間的依賴關(guān)系,以及制定編譯過程中運用的工具。同時,Make檢查目的文件的時間戳,假設(shè)目的文件的時間戳至少比他的一個依托文件舊, Make可以自

51、動地更新和編譯程序。我們先舉一個實例來認(rèn)識Make和Makefile文件的用法make概述make依托Makefile文件完成。默許情況下,GNU make工具在當(dāng)前任務(wù)目錄中按如下順序搜索makefile:GNU makefile makefile Makefile。在Linux系統(tǒng)中,習(xí)慣運用Makefile作為makefile文件。假設(shè)要運用其他文件作為makefile,那么可利用下面make命令指明makefile文件:#make f Makefile.debug。比如:“Make.Linux,“Make.Solaris,“Make.AIX等,假設(shè)要指定特定的Makefile,他可以運

52、用make的“-f和“-file參數(shù),如:make -f Make.Linux或make -file Make.AIX。 Makefile是一個文本格式的數(shù)據(jù)庫文件,包含一些規(guī)那么,通知make編譯哪些文件,在什么條件下編譯。make規(guī)那么Makefile中的每條規(guī)那么包括下面內(nèi)容:一個目的體target:make最終需創(chuàng)建的對象。包含一個或多個依賴體Dependency的列表,依賴體指明編譯目的時需求用到的其它文件。 命令Command列表,指明從依賴體文件創(chuàng)建出目的對象所需求執(zhí)行的命令??钍? (注:每個命令行前必需是一個Tab字符)target: dependency dependenc

53、y command command 假設(shè)一個工程有3個頭文件,和8個C文件,我們?yōu)榱送瓿汕懊嫠龅哪侨齻€規(guī)那么,我們的Makefile應(yīng)該是下面的這個樣子的。 edit : main.o kbd.o command.o display.o insert.o search.o files.o utils.o gcc -o edit main.o kbd.o command.o display.o insert.o search.o files.o utils.o main.o : main.c defs.h gcc -c main.c kbd.o : kbd.c defs.h command.h

54、 gcc -c kbd.c command.o : command.c defs.h command.h gcc -c command.c display.o : display.c defs.h buffer.h gcc -c display.c 反斜杠是換行符的意思以TAB鍵開頭insert.o : insert.c defs.h buffer.h gcc -c insert.c search.o : search.c defs.h buffer.h gcc -c search.c files.o : files.c defs.h buffer.h command.h gcc -c fil

55、es.c utils.o : utils.c defs.h gcc -c utils.c clean : rm edit main.o kbd.o command.o display.o insert.o search.o files.o utils.o makefile中運用變量 在上面的例子中,先讓我們看看edit的規(guī)那么: edit : main.o kbd.o command.o display.o insert.o search.o files.o utils.o gcc -o edit main.o kbd.o command.o display.o insert.o search

56、.o files.o utils.o 我們可以看到.o文件的字符串被反復(fù)了兩次,假設(shè)我們的工程需求參與一個新的.o文件,那么我們需求在兩個地方加。當(dāng)然,我們的makefile并不復(fù)雜,所以在兩個地方加也不累,但假設(shè)makefile變得復(fù)雜,那么我們就有能夠會忘掉一個需求參與的地方,而導(dǎo)致編譯失敗。所以,為了makefile的易維護,在makefile中我們可以運用變量。makefile的變量也就是一個字符串,了解成C言語中的宏能夠會更好。 比如,我們聲明一個變量,叫objects.我們在makefile一開場就這樣定義: objects = main.o kbd.o command.o dis

57、play.o insert.o search.o files.o utils.o 很方便地在我們的makefile中以“$(objects)的方式來運用這個變量了程序如下:objects = main.o kbd.o command.o display.o insert.o search.o files.o utils.o edit : $(objects) gcc -o edit $(objects) clean : rm edit $(objects) make的“隱晦規(guī)那么GNU的make很強大,它可以自動推導(dǎo)文件以及文件依賴關(guān)系后面的命令,于是我們就沒必要去在每一個.o文件后都寫上類似

58、的命令,由于,我們的make會自動識別,并本人推導(dǎo)命令。 只需make看到一個.o文件,它就會自動的把.c文件加在依賴關(guān)系中,假設(shè)make找到一個whatever.o,那么whatever.c,就會是whatever.o的依賴文件。并且 gcc -c whatever.c 也會被推導(dǎo)出來,于是,我們的makefile再也不用寫得這么復(fù)雜。新的makefile又出爐了。 objects = main.o kbd.o command.o display.o insert.o search.o files.o utils.o edit : $(objects) gcc -o edit $(objec

59、ts) main.o : defs.h kbd.o : defs.h command.h command.o : defs.h command.h display.o : defs.h buffer.h insert.o : defs.h buffer.h search.o : defs.h buffer.h files.o : defs.h buffer.h command.h utils.o : defs.h .PHONY : clean clean : rm edit $(objects) 自動推導(dǎo)文件以及文件依賴關(guān)系后面的命令PHONY意思表示clean是一個“偽目的注釋Makefil

60、e中只需行注釋,和UNIX的Shell腳本一樣,其注釋是用“#字符,這個就像C/C+中的“/一樣。假設(shè)他要在他的Makefile中運用“#字符,可以用反斜框進展本義,如:“#。例如:#that is a makefileHello:hello.o. 1每個子目錄都有本人的Makefile,擔(dān)任本子目錄文件的編譯和控制下級目錄的編譯。2系統(tǒng)有一規(guī)那么文件Rules.make,為整個系統(tǒng)一切的Makefile所用,放在頂層.3上級Makefile文件對下級Makefile文件進展控制,逐級遞歸到最低層的Makefile文件。最頂層的Makefile文件給出創(chuàng)建的目的文件。完成大工程系統(tǒng)編譯的方法交

溫馨提示

  • 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

提交評論