《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 業(yè)界動(dòng)態(tài) > arm-linux-gcc 常用參數(shù)講解 gcc編譯器使用方法

arm-linux-gcc 常用參數(shù)講解 gcc編譯器使用方法

2015-09-18
關(guān)鍵詞: arm-linux-gcc 編譯器

  我們需要編譯出運(yùn)行在ARM平臺(tái)上的代碼,所使用的交叉編譯器arm-linux-gcc。下面將arm-linux-gcc編譯工具的一些常用命令參數(shù)介紹給大家。
  在此之前首先介紹下編譯器的工作過(guò)程,在使用GCC編譯程序時(shí),編譯過(guò)程分為四個(gè)階段:
  1. 預(yù)處理(Pre-Processing)
  2. 編譯(Compiling)
  3. 匯編(Assembling)
  4. 鏈接(Linking)
  Linux程序員可以根據(jù)自己的需要讓 GCC在編譯的任何階段結(jié)束,以便檢查或使用編譯器在該階段的輸出信息,或者對(duì)最后生成的二進(jìn)制文件進(jìn)行控制,以便通過(guò)加入不同數(shù)量和種類(lèi)的調(diào)試代碼來(lái)為 今后的調(diào)試做好準(zhǔn)備。和其它常用的編譯器一樣,GCC也提供了靈活而強(qiáng)大的代碼優(yōu)化功能,利用它可以生成執(zhí)行效率更高的代碼。
  以文件example.c為例說(shuō)明它的用法
  0. arm-linux-gcc -o example example.c
  不加-c、-S、-E參數(shù),編譯器將執(zhí)行預(yù)處理、編譯、匯編、連接操作直接生成可執(zhí)行代碼。
  -o參數(shù)用于指定輸出的文件,輸出文件名為example,如果不指定輸出文件,則默認(rèn)輸出a.out
  1. arm-linux-gcc -c -o example.o example.c
  -c參數(shù)將對(duì)源程序example.c進(jìn)行預(yù)處理、編譯、匯編操作,生成example.0文件
  去掉指定輸出選項(xiàng)"-o example.o"自動(dòng)輸出為example.o,所以說(shuō)在這里-o加不加都可以
  2.arm-linux-gcc -S -o example.s example.c
  -S參數(shù)將對(duì)源程序example.c進(jìn)行預(yù)處理、編譯,生成example.s文件
  -o選項(xiàng)同上
  3.arm-linux-gcc -E -o example.i example.c
  -E參數(shù)將對(duì)源程序example.c進(jìn)行預(yù)處理,生成example.i文件(不同版本不一樣,有的將預(yù)處理后的內(nèi)容打印到屏幕上)
  就是將#include,#define等進(jìn)行文件插入及宏擴(kuò)展等操作。
  4.arm-linux-gcc -v -o example example.c
  加上-v參數(shù),顯示編譯時(shí)的詳細(xì)信息,編譯器的版本,編譯過(guò)程等。
  5.arm-linux-gcc -g -o example example.c
  -g選項(xiàng),加入GDB能夠使用的調(diào)試信息,使用GDB調(diào)試時(shí)比較方便。
  6.arm-linux-gcc -Wall -o example example.c
  -Wall選項(xiàng)打開(kāi)了所有需要注意的警告信息,像在聲明之前就使用的函數(shù),聲明后卻沒(méi)有使用的變量等。
  7.arm-linux-gcc -Ox -o example example.c
  -Ox使用優(yōu)化選項(xiàng),X的值為空、0、1、2、3
  0為不優(yōu)化,優(yōu)化的目的是減少代碼空間和提高執(zhí)行效率等,但相應(yīng)的編譯過(guò)程時(shí)間將較長(zhǎng)并占用較大的內(nèi)存空間。
  8.arm-linux-gcc   -I /home/include -o example example.c
  -Idirname: 將dirname所指出的目錄加入到程序頭文件目錄列表中。如果在預(yù)設(shè)系統(tǒng)及當(dāng)前目錄中沒(méi)有找到需要的文件,就到指定的dirname目錄中去尋找。
  9.arm-linux-gcc   -L /home/lib -o example example.c
  -Ldirname:將dirname所指出的目錄加入到庫(kù)文件的目錄列表中。在默認(rèn)狀態(tài)下,連接程序ld在系統(tǒng)的預(yù)設(shè)路徑中(如/usr/lib)尋找所需要的庫(kù)文件,這個(gè)選項(xiàng)告訴連接程序,首先到-L指定的目錄中去尋找,然后再到系統(tǒng)預(yù)設(shè)路徑中尋找。
  10.arm-linux-gcc -static -o libexample.a example.c
  靜態(tài)鏈接庫(kù)文件
  gcc在命令行上經(jīng)常使用的幾個(gè)選項(xiàng)是:
  -c   只預(yù)處理、編譯和匯編源程序,不進(jìn)行連接。編譯器對(duì)每一個(gè)源程序產(chǎn)生一個(gè)目標(biāo)文件。
  -o file  確定輸出文件為file。如果沒(méi)有用-o選項(xiàng),缺省的可執(zhí)行文件的輸出是a.out,目標(biāo)文件和匯編文件的輸出對(duì)source.suffix分別是source.o和source.s,預(yù)處理的C源程序的輸出是標(biāo)準(zhǔn)輸出stdout。
  -Dmacro或-Dmacro=defn   其作用類(lèi)似于源程序里的#define。例如:% gcc -c -DHAVE_GDBM -DHELP_FILE=\"help\" cdict.c其中第一個(gè)- D選項(xiàng)定義宏HAVE_GDBM,在程序里可以用#ifdef去檢查它是否被設(shè)置。第二個(gè)-D選項(xiàng)將宏HELP_FILE定義為字符串“help”(由于反斜線的作用,引號(hào)實(shí)際上已成為該宏定義的一部分),這對(duì)于控制程序打開(kāi)哪個(gè)文件是很有用的。
  -Umacro   某些宏是被編譯程序自動(dòng)定義的。這些宏通常可以指定在其中進(jìn)行編譯的計(jì)算機(jī)系統(tǒng)類(lèi)型的符號(hào),用戶可以在編譯某程序時(shí)加上 -v選項(xiàng)以查看gcc缺省定義了哪些宏。如果用戶想取消其中某個(gè)宏定義,用-Umacro選項(xiàng),這相當(dāng)于把#undef macro放在要編譯的源文件的開(kāi)頭。
  -Idir   將dir目錄加到搜尋頭文件的目錄列表中去,并優(yōu)先于在gcc缺省的搜索目錄。在有多個(gè)-I選項(xiàng)的情況下,按命令行上-I選項(xiàng)的前后順序搜索。dir可使用相對(duì)路徑,如-I../inc等。
  -O   對(duì)程序編譯進(jìn)行優(yōu)化,編譯程序試圖減少被編譯程序的長(zhǎng)度和執(zhí)行時(shí)間,但其編譯速度比不做優(yōu)化慢,而且要求較多的內(nèi)存。
  -O2   允許比-O更好的優(yōu)化,編譯速度較慢,但結(jié)果程序的執(zhí)行速度較快。
  -g   產(chǎn)生一張用于調(diào)試和排錯(cuò)的擴(kuò)展符號(hào)表。-g選項(xiàng)使程序可以用GNU的調(diào)試程序GDB進(jìn)行調(diào)試。優(yōu)化和調(diào)試通常不兼容,同時(shí)使用-g和-O(-O2)選項(xiàng)經(jīng)常會(huì)使程序產(chǎn)生奇怪的運(yùn)行結(jié)果。所以不要同時(shí)使用-g和-O(-O2)選項(xiàng)。
  -fpic或-fPIC   產(chǎn)生位置無(wú)關(guān)的目標(biāo)代碼,可用于構(gòu)造共享函數(shù)庫(kù)。
  以上是gcc的編譯選項(xiàng)。gcc的命令行上還可以使用連接選項(xiàng)。事實(shí)上,gcc將所有不能識(shí)別的選項(xiàng)傳遞給連接程序ld。連接程序ld將幾個(gè)目標(biāo)文件和庫(kù)程序組合成一個(gè)可執(zhí)行文件,它要解決對(duì)外部變量、外部過(guò)程、庫(kù)程序等的引用。但我們永遠(yuǎn)不必要顯式地調(diào)用ld。利用gcc命令去連接各個(gè)文件是很簡(jiǎn)單的,即使在命令行里沒(méi)有列出庫(kù)程序,gcc也能保證某些庫(kù)程序以正確的次序出現(xiàn)。
  gcc的常用連接選項(xiàng)有下列幾個(gè):
  -Ldir   將dir目錄加到搜尋-l選項(xiàng)指定的函數(shù)庫(kù)文件的目錄列表中去,并優(yōu)先于gcc缺省的搜索目錄。在有多個(gè)-L選項(xiàng)的情況下,按命令行上-L選項(xiàng)的前后順序搜索。dir可使用相對(duì)路徑。如-L../lib等。
  -lname   在連接時(shí)使用函數(shù)庫(kù)libname.a,連接程序在-Ldir選項(xiàng)指定的目錄下和/lib,/usr/lib目錄下尋找該庫(kù)文件。在沒(méi)有使用-static選項(xiàng)時(shí),如果發(fā)現(xiàn)共享函數(shù)庫(kù)libname.so,則使用libname.so進(jìn)行動(dòng)態(tài)連接。
  -static   禁止與共享函數(shù)庫(kù)連接。
  -shared   盡量與共享函數(shù)庫(kù)連接

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲一区二区毛片| 欧美日韩成人综合| 日韩亚洲综合在线| 亚洲电影免费在线| 欧美在线观看视频在线| 性欧美videos另类喷潮| 午夜国产精品影院在线观看| 亚洲在线视频网站| 中文一区二区在线观看| 一道本一区二区| 亚洲伦伦在线| 亚洲精品欧美日韩专区| 亚洲激情中文1区| 亚洲国产成人精品久久久国产成人一区| 国产一区二区激情| 黑人一区二区| 永久域名在线精品| 亚洲高清资源综合久久精品| 在线日本欧美| 亚洲黄网站黄| 亚洲欧洲日产国产网站| 91久久精品国产91久久| 91久久精品国产91性色| 亚洲美女黄色| 亚洲天堂成人在线视频| 亚洲欧美日本国产有色| 午夜精品久久久久久久99黑人| 亚洲欧美一区在线| 久久精品国产视频| 亚洲精品免费一二三区| 99国产精品视频免费观看| 一本一本a久久| 亚洲在线观看视频网站| 性8sex亚洲区入口| 久久久久久久999| 欧美a级理论片| 欧美日韩国产bt| 国产精品久久二区二区| 国产拍揄自揄精品视频麻豆| 海角社区69精品视频| 在线观看的日韩av| 亚洲老司机av| 亚洲欧美另类综合偷拍| 亚洲国产成人高清精品| 在线亚洲伦理| 久久爱另类一区二区小说| 久久偷看各类wc女厕嘘嘘偷窃| 欧美成人免费大片| 欧美调教vk| 国产区亚洲区欧美区| 在线观看成人小视频| 99精品免费| 羞羞色国产精品| 亚洲人成网站精品片在线观看 | 亚洲一区二区三区高清| 久久国产精品亚洲77777| 99国内精品久久| 欧美专区日韩专区| 欧美激情亚洲自拍| 国产区精品在线观看| 亚洲精品久久嫩草网站秘色| 亚洲一区二区三区视频播放| 亚洲国产mv| 亚洲欧美日韩直播| 免费一级欧美片在线观看| 国产精品sm| 激情成人综合网| 亚洲最新在线视频| 亚洲国产va精品久久久不卡综合| 亚洲一二三区在线| 裸体丰满少妇做受久久99精品| 欧美三区在线视频| 精品动漫3d一区二区三区免费版| aa级大片欧美| 亚洲国产精品第一区二区三区| 亚洲自拍16p| 免费视频亚洲| 国产日韩欧美一区| 9国产精品视频| 亚洲国产日韩综合一区| 欧美一区二区成人| 欧美极品在线视频| 狠狠色综合日日| 中日韩在线视频| 亚洲精品久久久久久下一站| 久久精品青青大伊人av| 国产精品第十页| 亚洲国产另类久久精品| 久久成人综合网| 亚洲欧美综合网| 欧美日韩免费观看中文| 在线观看欧美一区| 欧美在线观看视频在线| 亚洲欧美影音先锋| 欧美日韩国产精品一卡| 在线欧美小视频| 久久激情五月激情| 亚洲欧美综合v| 欧美网站在线观看| 亚洲精品国精品久久99热一| 亚洲高清在线精品| 久久久国产精品一区二区中文 | 日韩亚洲欧美成人一区| 久久嫩草精品久久久精品| 国产麻豆日韩| 亚洲午夜电影| 亚洲夜晚福利在线观看| 欧美精品日韩一本| 亚洲高清资源| 最新成人av在线| 免费的成人av| 极品尤物久久久av免费看| 久久国产精品一区二区三区四区 | 麻豆成人在线播放| 国产日韩欧美在线看| 亚洲欧美区自拍先锋| 亚洲欧美久久久| 欧美视频在线播放| 99re成人精品视频| 亚洲午夜国产成人av电影男同| 欧美精品久久一区| 91久久久久久久久| 亚洲精品一区二区三区在线观看| 你懂的成人av| 亚洲国产精品va在线看黑人| 亚洲人体影院| 欧美极品aⅴ影院| 亚洲精品欧美日韩专区| 一区二区三区精品久久久| 欧美另类一区二区三区| 亚洲精品乱码久久久久久日本蜜臀 | 亚洲男女自偷自拍| 国产精品久久久久久久7电影 | 欧美经典一区二区三区| 亚洲欧洲中文日韩久久av乱码| 亚洲日本无吗高清不卡| 欧美大片一区二区| 亚洲日本精品国产第一区| 亚洲视频网在线直播| 国产精品久久久免费| 亚洲欧美日韩成人高清在线一区| 久久精品国产亚洲一区二区| 狠狠久久亚洲欧美专区| 亚洲精品久久久久久久久久久久| 欧美日韩123| 亚洲男女自偷自拍| 久久琪琪电影院| 亚洲激情女人| 在线一区日本视频| 国产精品女主播在线观看| 久久99伊人| 欧美精品大片| 亚洲午夜未删减在线观看| 久久久久久网站| 西西裸体人体做爰大胆久久久| 免费成人美女女| 欧美日韩在线一区二区三区| 亚洲天堂偷拍| 亚洲图片在线| 国产视频在线观看一区 | 亚洲欧美日韩久久精品| 国产视频久久久久| 亚洲经典在线| 国产精品啊v在线| 欧美在线一级视频| 欧美区在线观看| 亚洲午夜精品国产| 久久综合久久综合久久综合| 亚洲美女精品久久| 久久国产精品久久国产精品| 在线观看精品一区| 亚洲欧美bt| 一区免费在线| 亚洲一区二区三区午夜| 韩国一区二区三区在线观看| 一本久道久久综合狠狠爱| 国产色视频一区| 99香蕉国产精品偷在线观看| 国产精品视频不卡| 亚洲欧洲另类| 国产欧美一区二区三区在线老狼| 亚洲免费精品| 国产视频不卡| 亚洲午夜激情网站| 影音先锋另类| 欧美一区二区三区四区高清| 亚洲国产美女| 久久久精品日韩欧美| 一区二区三区视频在线观看| 久久影视精品| 亚洲免费在线精品一区| 欧美另类亚洲| 亚洲国产精品久久| 国产欧美在线播放| 亚洲午夜精品福利| 亚洲国产影院| 久久人体大胆视频| 亚洲在线播放| 欧美日韩在线播放一区二区| 亚洲国产精品成人综合|