溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

linux中o和a文件指的是什么

發(fā)布時(shí)間:2022-11-11 09:45:38 來(lái)源:億速云 閱讀:123 作者:iii 欄目:建站服務(wù)器

本篇內(nèi)容主要講解“l(fā)inux中o和a文件指的是什么”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“l(fā)inux中o和a文件指的是什么”吧!

在linux中,“.o”文件指的是目標(biāo)文件,即存放目標(biāo)代碼的計(jì)算機(jī)文件;目標(biāo)文件包含著機(jī)器代碼(可直接被計(jì)算機(jī)中央處理器執(zhí)行)以及代碼在運(yùn)行時(shí)使用的數(shù)據(jù),此外還包括其他調(diào)試信息?!?a”文件指的是靜態(tài)庫(kù)文件,是指要調(diào)用的函數(shù)或者過(guò)程鏈接到可執(zhí)行文件中,成為可執(zhí)行文件的一部分,動(dòng)態(tài)鏈接所調(diào)用的函數(shù)代碼并沒(méi)有被拷貝到應(yīng)用程序的可執(zhí)行文件中去,而是在其中加入了所調(diào)用函數(shù)的描述信息。

o就是object,也就是相當(dāng)于windows下編譯的obj文件,俗稱(chēng)目標(biāo)文件

a就是archive,也就相當(dāng)于window的VC下編譯的lib文件,俗稱(chēng)靜態(tài)庫(kù)文件;多個(gè).a可以鏈接生成一個(gè)exe的可執(zhí)行文件。

.o文件是鏈接文件,.a靜態(tài)庫(kù)文件,靠.o文件生成,作為一個(gè)庫(kù)外部程序提供函數(shù),接口。生成.o文件。

linux中的o文件(目標(biāo)文件)

目標(biāo)文件(objectfile)即存放目標(biāo)代碼的計(jì)算機(jī)文件,它常被“稱(chēng)作”二進(jìn)制文件(binaries)。目標(biāo)文件包含著機(jī)器代碼(可直接被計(jì)算機(jī)中央處理器執(zhí)行)以及代碼在運(yùn)行時(shí)使用的數(shù)據(jù),如重定位信息,如用于鏈接或調(diào)試的程序符號(hào)表(變量和函數(shù)的名字),此外還包括其他調(diào)試信息。

Linux下有3種目標(biāo)文件形式:

可執(zhí)行目標(biāo)文件,可重定位目標(biāo)文件和共享目標(biāo)文件。也有對(duì)應(yīng)的稱(chēng)為可執(zhí)行文件,目標(biāo)文件,共享庫(kù),只是說(shuō)法不同,指的都是同樣的東西。

可執(zhí)行目標(biāo)文件:包含二進(jìn)制代碼和數(shù)據(jù),可以在存儲(chǔ)器中直接執(zhí)行。

可重定位目標(biāo)文件:包含二進(jìn)制代碼和數(shù)據(jù),可以在編譯時(shí)與其他可重定位目標(biāo)文件合并起來(lái)的,創(chuàng)建一個(gè)可執(zhí)行目標(biāo)文件。

共享目標(biāo)文件:是一種特殊的可重定位目標(biāo)文件,可以在加載或者運(yùn)行時(shí)被動(dòng)態(tài)加載到存儲(chǔ)器并鏈接。

事實(shí)上,編譯器和匯編器生成可重定位目標(biāo)文件(包含共享目標(biāo)文件)。鏈接器生成可執(zhí)行目標(biāo)文件。

Linux下目標(biāo)文件文件格式:

由于編譯后的中間文件(Windows下的.obj和Linux下的.o),動(dòng)態(tài)鏈接庫(kù)和靜態(tài)鏈接庫(kù)(Windows下的.lib.dll和Linux下的.a.so),跟可執(zhí)行文件的內(nèi)容和結(jié)構(gòu)相似,所以一般跟可執(zhí)行文件一起采用同一種文件格式存儲(chǔ)。

linux中的a文件(靜態(tài)庫(kù)文件)

.a文件,是LINUX系統(tǒng)中的靜態(tài)鏈接庫(kù)文件。

所謂靜態(tài)鏈接是指把要調(diào)用的函數(shù)或者過(guò)程鏈接到可執(zhí)行文件中,成為可執(zhí)行文件的一部分。當(dāng)多個(gè)程序都調(diào)用相同函數(shù)時(shí),內(nèi)存中就會(huì)存在這個(gè)函數(shù)的多個(gè)拷貝,這樣就浪費(fèi)了寶貴的內(nèi)存資源。.so文件是共享庫(kù)文件(動(dòng)態(tài)鏈接)。動(dòng)態(tài)鏈接所調(diào)用的函數(shù)代碼并沒(méi)有被拷貝到應(yīng)用程序的可執(zhí)行文件中去,而是僅僅在其中加入了所調(diào)用函數(shù)的描述信息(往往是一些重定位信息),僅當(dāng)應(yīng)用程序被裝入內(nèi)存開(kāi)始運(yùn)行時(shí),在操作系統(tǒng)的管理下,才在應(yīng)用程序與相應(yīng)的.so之間建立鏈接關(guān)系。

.a文件是多個(gè).o文件的組合。.o文件就是對(duì)象文件,里面包含的內(nèi)容就是01這樣的機(jī)器可執(zhí)行的指令,當(dāng)程序要執(zhí)行時(shí)還需要進(jìn)行鏈接(link).鏈接就是把多個(gè).o文件鏈成一個(gè)可執(zhí)行文件。

什么是Linux系統(tǒng)

Linux是一種免費(fèi)使用和自由傳播的類(lèi)UNIX操作系統(tǒng),是一個(gè)基于POSIX的多用戶、多任務(wù)、支持多線程和多CPU的操作系統(tǒng),使用Linux能運(yùn)行主要的Unix工具軟件、應(yīng)用程序和網(wǎng)絡(luò)協(xié)議。

到此,相信大家對(duì)“l(fā)inux中o和a文件指的是什么”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI