校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > Linux GCC常用命令詳解

Linux GCC常用命令詳解

熱門標簽:百度地圖標注開鎖電話 pageadm實現地圖標注 依蘭縣地圖標注app 琿春市地圖標注app 山東企業電銷機器人價格 公司400電話辦理價格 百度中國地圖標注中心 安陽百應電銷機器人加盟 潮州地圖標注

1. 簡介

GCC 的意思也只是 GNU C Compiler 而已。經過了這么多年的發展,GCC 已經不僅僅能支持 C 語言;它現在還支持 Ada 語言、C++ 語言、Java 語言、Objective C 語言、Pascal 語言、COBOL語言,以及支持函數式編程和邏輯編程的 Mercury 語言,等等。而 GCC 也不再單只是 GNU C 語言編譯器的意思了,而是變成了 GNU Compiler Collection 也即是 GNU 編譯器家族的意思了。另一方面,說到 GCC 對于操作系統平臺及硬件平臺支持,概括起來就是一句話:無所不在。

2. 簡單編譯

示例程序如下:

//test.c #include int main(void) { printf("Hello World!\n"); return 0; }

這個程序,一步到位的編譯指令是:

gcc test.c -o test

實質上,上述編譯過程是分為四個階段進行的,即預處理(也稱預編譯,Preprocessing)、編譯(Compilation)、匯編 (Assembly)和連接(Linking)。

2.1 預處理

gcc -E test.c -o test.i 或 gcc -E test.c

可以輸出test.i文件中存放著test.c經預處理之后的代碼。打開test.i文件,看一看,就明白了。后面那條指令,是直接在命令行窗口中輸出預處理后的代碼。

gcc的-E選項,可以讓編譯器在預處理后停止,并輸出預處理結果。在本例中,預處理結果就是將stdio.h 文件中的內容插入到test.c中了。

2.2 編譯為匯編代碼(Compilation)

預處理之后,可直接對生成的test.i文件編譯,生成匯編代碼:

gcc -S test.i -o test.s

gcc的-S選項,表示在程序編譯期間,在生成匯編代碼后,停止,-o輸出匯編代碼文件。

2.3 匯編(Assembly)

對于上一小節中生成的匯編代碼文件test.s,gas匯編器負責將其編譯為目標文件,如下:

gcc -c test.s -o test.o

2.4 連接(Linking)

gcc連接器是gas提供的,負責將程序的目標文件與所需的所有附加的目標文件連接起來,最終生成可執行文件。附加的目標文件包括靜態連接庫和動態連接庫。

對于上一小節中生成的test.o,將其與C標準輸入輸出庫進行連接,最終生成程序test

gcc test.o -o test

在命令行窗口中,執行./test, 讓它說HelloWorld吧!

3. 多個程序文件的編譯

通常整個程序是由多個源文件組成的,相應地也就形成了多個編譯單元,使用GCC能夠很好地管理這些編譯單元。假設有一個由test1.c和 test2.c兩個源文件組成的程序,為了對它們進行編譯,并最終生成可執行程序test,可以使用下面這條命令:

gcc test1.c test2.c -o test

如果同時處理的文件不止一個,GCC仍然會按照預處理、編譯和鏈接的過程依次進行。如果深究起來,上面這條命令大致相當于依次執行如下三條命令:

gcc -c test1.c -o test1.o gcc -c test2.c -o test2.o gcc test1.o test2.o -o test

4. 檢錯

gcc -pedantic illcode.c -o illcode

-pedantic編譯選項并不能保證被編譯程序與ANSI/ISO C標準的完全兼容,它僅僅只能用來幫助Linux程序員離這個目標越來越近。或者換句話說,-pedantic選項能夠幫助程序員發現一些不符合 ANSI/ISO C標準的代碼,但不是全部,事實上只有ANSI/ISO C語言標準中要求進行編譯器診斷的那些情況,才有可能被GCC發現并提出警告。

除了-pedantic之外,GCC還有一些其它編譯選項也能夠產生有用的警告信息。這些選項大多以-W開頭,其中最有價值的當數-Wall了,使用它能夠使GCC產生盡可能多的警告信息。

gcc -Wall illcode.c -o illcode

GCC給出的警告信息雖然從嚴格意義上說不能算作錯誤,但卻很可能成為錯誤的棲身之所。一個優秀的Linux程序員應該盡量避免產生警告信息,使自己的代碼始終保持標準、健壯的特性。所以將警告信息當成編碼錯誤來對待,是一種值得贊揚的行為!所以,在編譯程序時帶上-Werror選項,那么GCC會在所有產生警告的地方停止編譯,迫使程序員對自己的代碼進行修改,如下:

gcc -Werror test.c -o test

5. 庫文件連接

開發軟件時,完全不使用第三方函數庫的情況是比較少見的,通常來講都需要借助許多函數庫的支持才能夠完成相應的功能。從程序員的角度看,函數庫實際上就是一些頭文件(.h)和庫文件(so、或lib、dll)的集合。\。雖然Linux下的大多數函數都默認將頭文件放到/usr/include/目錄下,而庫文件則放到/usr/lib/目錄下;Windows所使用的庫文件主要放在Visual Stido的目錄下的include和lib,以及系統文件夾下。但也有的時候,我們要用的庫不再這些目錄下,所以GCC在編譯時必須用自己的辦法來查找所需要的頭文件和庫文件。

例如我們的程序test.c是在linux上使用c連接mysql,這個時候我們需要去mysql官網下載MySQL Connectors的C庫,下載下來解壓之后,有一個include文件夾,里面包含mysql connectors的頭文件,還有一個lib文件夾,里面包含二進制so文件libmysqlclient.so

其中inclulde文件夾的路徑是 /usr/dev/mysql/include ,lib文件夾是 /usr/dev/mysql/lib

5.1 編譯成可執行文件

首先我們要進行編譯test.c為目標文件,這個時候需要執行

gcc –c –I /usr/dev/mysql/include test.c –o test.o

5.2 鏈接

最后我們把所有目標文件鏈接成可執行文件:

gcc –L /usr/dev/mysql/lib –lmysqlclient test.o –o test

Linux下的庫文件分為兩大類分別是動態鏈接庫(通常以.so結尾)和靜態鏈接庫(通常以.a結尾),二者的區別僅在于程序執行時所需的代碼是在運行時動態加載的,還是在編譯時靜態加載的。

5.3 強制鏈接時使用靜態鏈接庫

默認情況下, GCC在鏈接時優先使用動態鏈接庫,只有當動態鏈接庫不存在時才考慮使用靜態鏈接庫,如果需要的話可以在編譯時加上-static選項,強制使用靜態鏈接庫。

在/usr/dev/mysql/lib目錄下有鏈接時所需要的庫文件libmysqlclient.so和libmysqlclient.a,為了讓GCC在鏈接時只用到靜態鏈接庫,可以使用下面的命令:

gcc –L /usr/dev/mysql/lib –static –lmysqlclient test.o –o test

靜態庫鏈接時搜索路徑順序:

1. ld會去找GCC命令中的參數-L

2. 再找gcc的環境變量LIBRARY_PATH

3. 再找內定目錄 /lib /usr/lib /usr/local/lib 這是當初compile gcc時寫在程序內的

動態鏈接時、執行時搜索路徑順序:

1. 編譯目標代碼時指定的動態庫搜索路徑

2. 環境變量LD_LIBRARY_PATH指定的動態庫搜索路徑

3. 配置文件/etc/ld.so.conf中指定的動態庫搜索路徑

4. 默認的動態庫搜索路徑/lib

5. 默認的動態庫搜索路徑/usr/lib

有關環境變量:

LIBRARY_PATH環境變量:指定程序靜態鏈接庫文件搜索路徑

LD_LIBRARY_PATH環境變量:指定程序動態鏈接庫文件搜索路徑

標簽:連云港 香港 林芝 晉中 常德 三明 呼和浩特 公主嶺

巨人網絡通訊聲明:本文標題《Linux GCC常用命令詳解》,本文關鍵詞  Linux,GCC,常用,命令,詳解,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Linux GCC常用命令詳解》相關的同類信息!
  • 本頁收集關于Linux GCC常用命令詳解的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    日本三级亚洲精品| 久久伊99综合婷婷久久伊| jizzjizzjizz欧美| 日本久久一区二区三区| 欧美久久婷婷综合色| 精品少妇一区二区三区免费观看| 久久亚洲精品小早川怜子| 国产精品视频一二三| 亚洲精品视频自拍| 青青草97国产精品免费观看 | 欧美一级夜夜爽| 成人欧美一区二区三区视频网页 | 欧美一区二区播放| 亚洲国产成人va在线观看天堂| 麻豆成人久久精品二区三区小说| 91欧美一区二区| 国产欧美日韩亚州综合 | 欧美aa在线视频| 91亚洲精品乱码久久久久久蜜桃| 欧美一级欧美三级| 午夜精品久久久久影视| 欧美中文字幕久久| 亚洲激情av在线| 成人免费av资源| 国产亚洲精品久| 99热在这里有精品免费| 亚洲女子a中天字幕| 91麻豆精品视频| 亚洲一区免费视频| 91蜜桃网址入口| 亚洲精品乱码久久久久| 欧美在线你懂的| 亚洲午夜精品网| 欧美一区二区三区爱爱| 国产在线不卡一区| 国产精品二三区| 欧美日韩视频专区在线播放| 亚洲v中文字幕| 久久综合九色综合97婷婷女人| 国产一区二区三区四区五区入口| 欧美精品一区二区久久久| av中文字幕一区| 日韩黄色小视频| 综合激情成人伊人| 精品污污网站免费看| 免费在线观看一区| 亚洲欧洲日本在线| 亚洲精品在线三区| 欧美亚洲综合色| 成人app软件下载大全免费| 亚洲18女电影在线观看| 国产亚洲欧洲997久久综合| 4hu四虎永久在线影院成人| 成人网在线免费视频| 激情深爱一区二区| 午夜精品福利视频网站| 一区二区三区在线视频观看58| 日韩精品一区二区三区在线 | 色综合色狠狠综合色| 色婷婷综合激情| 欧洲日韩一区二区三区| 成年人午夜久久久| 不卡高清视频专区| 国产精品一区三区| 日韩一区精品视频| 亚洲成人午夜电影| 亚洲h精品动漫在线观看| 亚洲黄色av一区| 亚洲精品五月天| 亚洲综合成人在线| 免费的成人av| 国产99精品国产| 成人性生交大片免费看中文| 成人午夜免费电影| 日本韩国精品一区二区在线观看| heyzo一本久久综合| 一本一道综合狠狠老| 欧美探花视频资源| 久久久久久久精| 日av在线不卡| 日韩精品一区二区三区四区| 亚洲一区二区三区四区中文字幕| 亚洲精品乱码久久久久久久久| 国产成人综合自拍| 国产欧美一区二区三区网站| 九九视频精品免费| 国产精品久久久久影院色老大| 亚洲欧美一区二区久久| 日韩影视精彩在线| 91网址在线看| 久久精品人人做| 午夜久久久久久久久| 国产成人啪免费观看软件| 3d动漫精品啪啪| 中文字幕欧美一区| 国产剧情av麻豆香蕉精品| 欧美日韩色一区| 亚洲人快播电影网| 99久久er热在这里只有精品66| 日韩亚洲电影在线| 蜜臀av一区二区在线观看| 色婷婷综合久久久| 一区二区三区日韩精品| 国产成人aaaa| 国产精品五月天| 99视频精品全部免费在线| 国产亚洲精品资源在线26u| 日本中文字幕一区二区视频| 日韩一级欧美一级| 欧美性猛交一区二区三区精品| 亚洲一区在线视频观看| 欧美大白屁股肥臀xxxxxx| 国产精品69毛片高清亚洲| 国产精品情趣视频| 7777精品伊人久久久大香线蕉| 久久 天天综合| 亚洲一级不卡视频| 欧美国产综合色视频| 欧美三级韩国三级日本一级| 国产精品123| 亚洲成人av免费| 亚洲欧美自拍偷拍| 久久久噜噜噜久久中文字幕色伊伊| 国产乱人伦偷精品视频不卡 | 丝袜亚洲另类丝袜在线| 日韩精品影音先锋| 欧美一区二区精品在线| 欧美网站一区二区| 一区二区三区四区在线免费观看| 五月婷婷色综合| 精品久久久久99| 国产欧美精品日韩区二区麻豆天美| 欧美高清在线一区二区| 一区二区三区在线观看动漫| 日韩中文字幕91| 国产91精品免费| 欧美综合一区二区| 欧美一区二区三区男人的天堂| 欧美一级精品大片| 欧美激情中文不卡| 一级精品视频在线观看宜春院 | 亚洲视频一区在线| 天堂成人免费av电影一区| 久久99久久99小草精品免视看| 亚洲同性gay激情无套| 国产精品久久久久久久第一福利 | 亚洲成av人片www| 狠狠狠色丁香婷婷综合久久五月| 国产a级毛片一区| 日本道精品一区二区三区 | 99re这里都是精品| 欧美在线三级电影| 中文字幕日韩av资源站| 美女视频黄频大全不卡视频在线播放| 久久99精品一区二区三区 | 中文字幕一区二区三中文字幕| 亚洲一区二区三区四区五区黄| 国产精品一线二线三线精华| 在线亚洲一区二区| 亚洲日穴在线视频| 国产精品影视天天线| 国产成人免费xxxxxxxx| 欧美成人午夜电影| 蜜臀av一区二区| 欧美一区三区四区| 亚洲亚洲人成综合网络| 在线亚洲人成电影网站色www| 26uuu另类欧美亚洲曰本| 蜜桃视频第一区免费观看| 欧美另类一区二区三区| 亚洲成a人v欧美综合天堂| 欧美日本一区二区三区| 亚洲二区在线视频| 欧美一区二区三区成人| 视频一区视频二区中文字幕| 欧美日韩一区二区三区四区五区| 自拍偷拍国产亚洲| 欧美精品一级二级三级| 久久99精品国产麻豆婷婷| 久久久久久久网| 欧美主播一区二区三区| 极品少妇一区二区| 亚洲午夜久久久久中文字幕久| 精品国产第一区二区三区观看体验| 成人免费高清视频| 六月丁香婷婷色狠狠久久| 亚洲国产综合在线| 国产清纯白嫩初高生在线观看91 | 日韩高清电影一区| 国产精品天美传媒| 国产精华液一区二区三区| 国产亚洲欧美激情| 91国在线观看| 久久99精品国产.久久久久久| 国产网红主播福利一区二区| av网站一区二区三区| 亚洲国产精品一区二区久久| 日韩欧美一级片| 99精品视频一区二区三区| 日本中文一区二区三区|