linux中o文件是什么
在Linux中,“.o”文件指的是目標(biāo)文件,“.o”是object的縮寫;linux中的“.o”文件相當(dāng)于windows中的“.obj”文件,目標(biāo)文件包含著機(jī)器代碼以及代碼在運行時使用的數(shù)據(jù),如重定位信息,如用于鏈接或調(diào)試的程序符號表,此外還包括其他調(diào)試信息。
本教程操作環(huán)境:linux7.3系統(tǒng)、Dell G3電腦。
linux中o文件是什么
.o 就是object, 也就相當(dāng)于windows下編譯的obj文件, 俗稱目標(biāo)文件.
目標(biāo)文件(objectfile)即存放目標(biāo)代碼的計算機(jī)文件,它常被“稱作”二進(jìn)制文件(binaries)。目標(biāo)文件包含著機(jī)器代碼(可直接被計算機(jī)中央處理器執(zhí)行)以及代碼在運行時使用的數(shù)據(jù),如重定位信息,如用于鏈接或調(diào)試的程序符號表(變量和函數(shù)的名字),此外還包括其他調(diào)試信息。
Linux下有3種目標(biāo)文件形式:
可執(zhí)行目標(biāo)文件,可重定位目標(biāo)文件和共享目標(biāo)文件。也有對應(yīng)的稱為可執(zhí)行文件,目標(biāo)文件,共享庫,只是說法不同,指的都是同樣的東西。
可執(zhí)行目標(biāo)文件:包含二進(jìn)制代碼和數(shù)據(jù),可以在存儲器中直接執(zhí)行。
可重定位目標(biāo)文件:包含二進(jìn)制代碼和數(shù)據(jù),可以在編譯時與其他可重定位目標(biāo)文件合并起來的,創(chuàng)建一個可執(zhí)行目標(biāo)文件。
共享目標(biāo)文件:是一種特殊的可重定位目標(biāo)文件,可以在加載或者運行時被動態(tài)加載到存儲器并鏈接。
事實上,編譯器和匯編器生成可重定位目標(biāo)文件(包含共享目標(biāo)文件)。鏈接器生成可執(zhí)行目標(biāo)文件。
Linux下目標(biāo)文件文件格式:
由于編譯后的中間文件(Windows下的.obj和Linux下的.o),動態(tài)鏈接庫和靜態(tài)鏈接庫(Windows下的.lib.dll和Linux下的.a.so),跟可執(zhí)行文件的內(nèi)容和結(jié)構(gòu)相似,所以一般跟可執(zhí)行文件一起采用同一種文件格式存儲。
擴(kuò)展知識:
生成.o文件:
gcc -c test.o test.c
生成.a文件:
ar cqs test.a test.o
.o 就相當(dāng)于windows里的obj文件 ,一個.c或.cpp文件對應(yīng)一個.o文件
.a 是好多個.o合在一起,用于靜態(tài)連接 ,即STATIC mode,多個.a可以鏈接生成一個exe的可執(zhí)行文件
.so 是shared object,用于動態(tài)連接的,和windows的dll差不多,使用時才載入
推薦學(xué)習(xí):Linux視頻教程
以上就是linux中o文件是什么的詳細(xì)內(nèi)容,更多請關(guān)注其它相關(guān)文章!
版權(quán)聲明:
本站所有文章和圖片均來自用戶分享和網(wǎng)絡(luò)收集,文章和圖片版權(quán)歸原作者及原出處所有,僅供學(xué)習(xí)與參考,請勿用于商業(yè)用途,如果損害了您的權(quán)利,請聯(lián)系網(wǎng)站客服處理。