為什么要包含頭文件而不是.c文件
測(cè)試代碼:
編譯:
In file included from m.c:1:0:
t.c: 在函數(shù)‘test'中:
t.c:3:2: 警告: 隱式聲明函數(shù)‘putchar' [-Wimplicit-function-declaration]
編譯通過(guò),只有一個(gè)警告,生成了可執(zhí)行文件m,運(yùn)行它正常,輸出一空格。
修改下t.c 文件:
編譯后執(zhí)行
輸出: test
從這可看出,包含.c文件進(jìn)去對(duì)程序并沒(méi)造成什么影響,反而比包含.h文件來(lái)得直接方便,這里主要考慮到大型項(xiàng)目中,各文件直接的聯(lián)系,如A.c文件中包好M.c文件,B.c 文件中包含M.c文件,而A.c文件又包含B.c文件,那么編譯時(shí)就會(huì)報(bào)錯(cuò),函數(shù)名重定義了。
#include>與#include""的區(qū)別:
對(duì)于用角括號(hào)包含的頭文件,gcc 首先查找-I選項(xiàng)指定的目錄,然后查找系統(tǒng)的頭文件目錄(通常是/usr/include,在我的系統(tǒng)上還包括/usr/lib/gcc/i486-linux-gnu/4.3.2/include);而對(duì)于用引號(hào)包含的頭文件,gcc 首先查找包含頭文件的.c文件所在的目錄,然后查找-I選項(xiàng)指定的目錄,最后再查找系統(tǒng)的頭文件目錄。
靜態(tài)庫(kù)
將如上5個(gè).c文件和一個(gè).h文件放在同目錄下,在當(dāng)前目錄下新建一Makefile文件,使用Makefile是編譯。
編譯后執(zhí)行./main
顯示:a
反編譯指令: 查看反編譯后程序
標(biāo)簽:馬鞍山 婁底 金昌 赤峰 許昌 巴彥淖爾 淘寶邀評(píng) 邵陽(yáng)
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《linux鏈接編譯詳解》,本文關(guān)鍵詞 linux,鏈接,編譯,詳解,linux,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。