freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

創(chuàng)建嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境-資料下載頁(yè)

2025-11-09 22:07本頁(yè)面
  

【正文】 n O是編譯器對(duì)程序提供的編譯優(yōu)化選項(xiàng),可以是編譯器對(duì)程序提供的編譯優(yōu)化選項(xiàng),可以提高執(zhí)行文件的運(yùn)行效率;提高執(zhí)行文件的運(yùn)行效率;例如例如 :gcc–O優(yōu)化編譯,并且產(chǎn)生了可執(zhí)行文件優(yōu)化編譯,并且產(chǎn)生了可執(zhí)行文件 。不需。不需要輸入目標(biāo)文件名。要輸入目標(biāo)文件名。n Wall 指定產(chǎn)生全部的指定產(chǎn)生全部的 警告警告 信息。信息。 例如例如 :gcc–Wall 產(chǎn)生全部警告信息,同時(shí)產(chǎn)生了可執(zhí)行文件產(chǎn)生全部警告信息,同時(shí)產(chǎn)生了可執(zhí)行文件。不需要輸入目標(biāo)文件名。不需要輸入目標(biāo)文件名。輸入文件的類型輸入文件的類型n gcc是通過(guò)后綴名來(lái)區(qū)別輸入文件的類型,下面是是通過(guò)后綴名來(lái)區(qū)別輸入文件的類型,下面是 gcc所遵所遵循的部分約定規(guī)則。循的部分約定規(guī)則。n c為后綴的文件,為后綴的文件, C語(yǔ)言源代碼文件;語(yǔ)言源代碼文件; .a為后綴的文件,是由目標(biāo)文件構(gòu)成的檔案庫(kù)文件;為后綴的文件,是由目標(biāo)文件構(gòu)成的檔案庫(kù)文件;.C, .cc或或 .cxx為后綴的文件,是為后綴的文件,是 C++源代碼文件;源代碼文件;.h為后綴的文件,是程序所包含的頭文件;為后綴的文件,是程序所包含的頭文件; .i為后綴的文件,是已經(jīng)預(yù)處理過(guò)的為后綴的文件,是已經(jīng)預(yù)處理過(guò)的 C源代碼文件;源代碼文件;.ii為后綴的文件,是已經(jīng)預(yù)處理過(guò)的為后綴的文件,是已經(jīng)預(yù)處理過(guò)的 C++源代碼文件;源代碼文件;.m為后綴的文件,是為后綴的文件,是 ObjectiveC源代碼文件;源代碼文件; .o為后綴的文件,是編譯后的為后綴的文件,是編譯后的 目標(biāo)文件目標(biāo)文件 ;;.s為后綴的文件,是匯編語(yǔ)言源代碼文件;為后綴的文件,是匯編語(yǔ)言源代碼文件;.S為后綴的文件,是經(jīng)過(guò)預(yù)編譯的匯編語(yǔ)言源代碼文件為后綴的文件,是經(jīng)過(guò)預(yù)編譯的匯編語(yǔ)言源代碼文件 。 gcc所生成的目標(biāo)文件格式所生成的為可執(zhí)行文件,所生成的為可執(zhí)行文件, Linux有兩種可執(zhí)行有兩種可執(zhí)行文件:文件: ELF(( )和)和 。ELF(( Executivelinkedfile)為可執(zhí)行鏈接文)為可執(zhí)行鏈接文件,是一種新標(biāo)準(zhǔn),功能更強(qiáng)大。文件的擴(kuò)展名為件,是一種新標(biāo)準(zhǔn),功能更強(qiáng)大。文件的擴(kuò)展名為 .exe。ELF為為 Linux的默認(rèn)格式的默認(rèn)格式交叉編譯命令交叉編譯命令n gcc基于命令行的?;诿钚械摹 當(dāng)作為交叉編譯工具使用時(shí),當(dāng)作為交叉編譯工具使用時(shí), gcc支持很多種的平臺(tái)和支持很多種的平臺(tái)和 “宿主機(jī)-目標(biāo)機(jī)宿主機(jī)-目標(biāo)機(jī) ”的組合。的組合。n 對(duì)應(yīng)交叉編譯,常用的命令就是對(duì)應(yīng)交叉編譯,常用的命令就是 armlinuxgcc這樣。這樣,當(dāng)用,當(dāng)用 C語(yǔ)言寫好一個(gè)應(yīng)用程序時(shí),使用此命令就是以語(yǔ)言寫好一個(gè)應(yīng)用程序時(shí),使用此命令就是以生成可以在目標(biāo)平臺(tái)上執(zhí)行的可執(zhí)行文件,通過(guò)超級(jí)終生成可以在目標(biāo)平臺(tái)上執(zhí)行的可執(zhí)行文件,通過(guò)超級(jí)終端執(zhí)行后,就可以在目標(biāo)板上看到程序的結(jié)果。端執(zhí)行后,就可以在目標(biāo)板上看到程序的結(jié)果。 GNU make工具 GNU make工具n 什么是什么是 Makefile文件文件 ?n 在大型的開(kāi)發(fā)項(xiàng)目中,通常有幾十個(gè)到上百個(gè)的源文件在大型的開(kāi)發(fā)項(xiàng)目中,通常有幾十個(gè)到上百個(gè)的源文件,如果每次均手工鍵入,如果每次均手工鍵入 gcc命令進(jìn)行編譯,會(huì)非常不方命令進(jìn)行編譯,會(huì)非常不方便。便。n Linux專門為軟件開(kāi)發(fā)提供了一個(gè)自動(dòng)化的管理工具專門為軟件開(kāi)發(fā)提供了一個(gè)自動(dòng)化的管理工具 GNUMake。n Make的主要工作是讀取的主要工作是讀取 Makefile文件的內(nèi)容。該文件描文件的內(nèi)容。該文件描述了目標(biāo)文件之間的依賴關(guān)系,以及制定編譯過(guò)程中使述了目標(biāo)文件之間的依賴關(guān)系,以及制定編譯過(guò)程中使用的工具。用的工具。n 同時(shí),同時(shí), Make檢查目的文件的時(shí)間戳,如果目的文件的時(shí)檢查目的文件的時(shí)間戳,如果目的文件的時(shí)間戳至少比他的一個(gè)依靠文件舊,間戳至少比他的一個(gè)依靠文件舊, Make可以自動(dòng)地更新可以自動(dòng)地更新和編譯程序。和編譯程序。n 我們先舉一個(gè)實(shí)例來(lái)認(rèn)識(shí)我們先舉一個(gè)實(shí)例來(lái)認(rèn)識(shí) Make和和 Makefile文件的用法文件的用法make概述n make依靠依靠 Makefile文件完成。文件完成。n 默認(rèn)情況下,默認(rèn)情況下, GNUmake工具在當(dāng)前工作目錄中工具在當(dāng)前工作目錄中 按如下順序按如下順序搜索搜索 makefile:: ”GNUmakefile”→” makefile”→” Makefile”。n 在在 Linux系統(tǒng)中,習(xí)慣使用系統(tǒng)中,習(xí)慣使用 Makefile作為作為 makefile文件。如果文件。如果要使用要使用 其他文件其他文件 作為作為 makefile,則可利用下面,則可利用下面 make命令指明命令指明makefile文件:文件: ”make–f”。n 比如:比如: “”, “”, “”等,等,如果要指定特定的如果要指定特定的 Makefile,你可以使用,你可以使用 make的的 “f”和和 “file”參數(shù),如:參數(shù),如: makef makefile n Makefile是一個(gè)文本格式的數(shù)據(jù)庫(kù)文件,包含一些規(guī)則,告是一個(gè)文本格式的數(shù)據(jù)庫(kù)文件,包含一些規(guī)則,告訴訴 make編譯哪些文件,在什么條件下編譯。編譯哪些文件,在什么條件下編譯。make規(guī)則規(guī)則n Makefile中的每條規(guī)則包括下面內(nèi)容:中的每條規(guī)則包括下面內(nèi)容:一個(gè)一個(gè) 目標(biāo)體(目標(biāo)體( target)) :: make最終需創(chuàng)建的對(duì)象。最終需創(chuàng)建的對(duì)象。包含一個(gè)或多個(gè)包含一個(gè)或多個(gè) 依賴體(依賴體( Dependency)) 的列表,依的列表,依賴體指明編譯目標(biāo)時(shí)需要用到的其它文件。賴體指明編譯目標(biāo)時(shí)需要用到的其它文件。命令(命令( Command)) 列表,指明從依賴體文件創(chuàng)建出列表,指明從依賴體文件創(chuàng)建出目標(biāo)對(duì)象所需要執(zhí)行的命令。目標(biāo)對(duì)象所需要執(zhí)行的命令。n 樣式樣式 :(注:每個(gè)命令行前必須是一個(gè)注:每個(gè)命令行前必須是一個(gè) Tab字符字符 )target:dependency[dependency[…]] mand mand[…]n 如果一個(gè)工程有如果一個(gè)工程有 3個(gè)頭文件,和個(gè)頭文件,和 8個(gè)個(gè) C文件文件 ,我們?yōu)榱送瓿?,我們?yōu)榱送瓿汕懊嫠龅哪侨齻€(gè)規(guī)則,我們的前面所述的那三個(gè)規(guī)則,我們的 Makefile應(yīng)該是下面的這應(yīng)該是下面的這個(gè)樣子的。個(gè)樣子的。 n edit:\n 168。 gccoedit\168。 n :168。 gcccn :168。 gcccn :168。 gcccn :168。 gccc反斜杠(反斜杠( \)是)是換行符的意思換行符的意思以以 TAB鍵開(kāi)頭鍵開(kāi)頭n :168。gcccn :168。gcccn :168。gcccn :168。gcccn clean:168。rmedit\168。makefile中使用變量 n 在上面的例子中,先讓我們看看在上面的例子中,先讓我們看看 edit的規(guī)則:的規(guī)則: n edit:\n 168。gccoedit\168。n 我們可以看到我們可以看到 [.o]文件的字符串被重復(fù)了兩次,如果我們文件的字符串被重復(fù)了兩次,如果我們的工程需要加入一個(gè)新的的工程需要加入一個(gè)新的 [.o]文件,那么我們需要在兩個(gè)文件,那么我們需要在兩個(gè)地方加。地方加。n 當(dāng)然,我們的當(dāng)然,我們的 makefile并不復(fù)雜,所以在兩個(gè)地方加也不并不復(fù)雜,所以在兩個(gè)地方加也不累,但如果累,但如果 makefile變得復(fù)雜,那么我們就有可能會(huì)忘掉變得復(fù)雜,那么我們就有可能會(huì)忘掉一個(gè)需要加入的地方,而導(dǎo)致編譯失敗。所以,為了一個(gè)需要加入的地方,而導(dǎo)致編譯失敗。所以,為了makefile的易維護(hù),的易維護(hù), 在在 makefile中我們可以使用變量中我們可以使用變量 。makefile的變量也就是一個(gè)字符串的變量也就是一個(gè)字符串 ,理解成,理解成 C語(yǔ)言中的語(yǔ)言中的 宏宏可能會(huì)更好。可能會(huì)更好。 n 比如,我們聲明一個(gè)變量,叫比如,我們聲明一個(gè)變量,叫 makefile一開(kāi)始一開(kāi)始就這樣定義:就這樣定義: n objects=\n n 很方便地在我們的很方便地在我們的 makefile中以中以 “$(objects)”的方式來(lái)使用這的方式來(lái)使用這個(gè)變量了個(gè)變量了n 程序如下程序如下 :n objects=\n n edit:$(objects)n gccoedit$(objects)n …………n clean:n rmedit$(objects)make的 “隱晦規(guī)則n GNU的的 make很強(qiáng)大,它可以很強(qiáng)大,它可以 自動(dòng)推導(dǎo)文件以及文件依賴自動(dòng)推導(dǎo)文件以及文件依賴關(guān)系后面的命令關(guān)系后面的命令 ,于是我們就沒(méi)必要去在每一個(gè),于是我們就沒(méi)必要去在每一個(gè) [.o]文件文件后都寫上類似的命令,因?yàn)椋覀兊暮蠖紝懮项愃频拿?,因?yàn)椋覀兊?make會(huì)自動(dòng)識(shí)別,會(huì)自動(dòng)識(shí)別,并自己推導(dǎo)命令。并自己推導(dǎo)命令。 n 只要只要 make看到一看到一 個(gè)個(gè) [.o]文件文件 ,它就會(huì)自動(dòng)的把,它就會(huì)自動(dòng)的把 [.c]文件加在文件加在依賴關(guān)系中依賴關(guān)系中 ,如果,如果 make找到一個(gè)找到一個(gè) ,那么,那么,就會(huì)是,就會(huì)是 。的依賴文件。n 并且并且 gccc也會(huì)被推導(dǎo)出來(lái)也會(huì)被推導(dǎo)出來(lái) ,于是,我們的,于是,我們的makefile再也不用寫得這么復(fù)雜。新的再也不用寫得這么復(fù)雜。新的 makefile又出爐又出爐了。了。 n objects=\n n edit:$(objects)168。gccoedit$(objects)n :n :n :n :n :n :n :n :n .PHONY:cleann clean:168。rmedit$(objects)自動(dòng)推導(dǎo)文件以自動(dòng)推導(dǎo)文件以及文件依賴關(guān)系及文件依賴關(guān)系后面的命令后面的命令PHONY意思表示意思表示clean是一個(gè)是一個(gè) “偽目偽目標(biāo)標(biāo) ”注釋n Makefile中只有中只有 行注釋行注釋 ,和,和 UNIX的的 Shell腳本一樣,其注腳本一樣,其注釋是用釋是用 “”字符,這個(gè)就像字符,這個(gè)就像 C/C++中的中的 “//”一樣。如果你要一樣。如果你要在你的在你的 Makefile中使用中使用 “”字符,可以用反斜框進(jìn)行轉(zhuǎn)義,字符,可以用反斜框進(jìn)行轉(zhuǎn)義,如:如: “\”。n 例如例如 :n thatisamakefilen Hello:n ……..n (( 1)每個(gè)子目錄都有自己的)每個(gè)子目錄都有自己的 Makefile,負(fù)責(zé)本子目錄文件,負(fù)責(zé)本子目錄文件的編譯和控制下級(jí)目錄的編譯。的編譯和控制下級(jí)目錄的編譯。n (( 2)系統(tǒng)有一規(guī)則文件)系統(tǒng)有一規(guī)則文件 ,為整個(gè)系統(tǒng)所有的,為整個(gè)系統(tǒng)所有的Makefile所用所用 ,放在頂層放在頂層 .n (( 3)上級(jí))上級(jí) Makefile文件對(duì)下級(jí)文件對(duì)下級(jí) Makefile文件進(jìn)行控制,逐文件進(jìn)行控制,逐級(jí)遞歸到最低層的級(jí)遞歸到最低層的 Makefile文件。最頂層的文件。最頂層的 Makefile文件給文件給出創(chuàng)建的目標(biāo)文件。出創(chuàng)建的目標(biāo)文件。完成大工程系統(tǒng)編譯的方法完成大工程系統(tǒng)編譯的方法交叉編譯中 makefile的例子n CROSS=/work/cgf/2410/n CFLAGS=D__KERNEL__n CFLAGS+=DMODULEn CFLAGS+=I/work/cgf/2410/n CFLAGS+=I/work/cgf/2410/n CFLAGS+=I/work/cgf/2410/\includen CFLAGS+=Wall Wstrict prototypesWnotrigraphs Osmapcsn CFLAGS+=fnostrictaliasingfnomonfnomonpipemapcs32n CFLAGS+=march=armv4mtune=arm9tdmimshortloadbytesmsoftfloatn CFLAGS+=DKBUILD_BASENAME=gpiodrvn all:n :n $(CROSS)gcc$(CFLAGS)con clean:n rmf*.o系統(tǒng)變量系統(tǒng)變量make就會(huì)這個(gè)就會(huì)這個(gè)參數(shù)所指定的參數(shù)
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1