在linux中,“.o”文件指的是目標文件,即存放目標代碼的計算機文件;目標文件包含著機器代碼(可直接被計算機中央處理器執行)以及代碼在運行時使用的數據,此外還包括其他調試信息。“.a”文件指的是靜態庫文件,是指要調用的函數或者過程鏈接到可執行文件中,成為可執行文件的一部分,動態鏈接所調用的函數代碼并沒有被拷貝到應用程序的可執行文件中去,而是在其中加入了所調用函數的描述信息。
程序員必備接口測試調試工具:立即使用
Apipost = Postman + Swagger + Mock + Jmeter
Api設計、調試、文檔、自動化測試工具
后端、前端、測試,同時在線協作,內容實時同步
本教程操作環境:linux7.3系統、Dell G3電腦。
o就是object,也就是相當于windows下編譯的obj文件,俗稱目標文件
a就是archive,也就相當于window的VC下編譯的lib文件,俗稱靜態庫文件;多個.a可以鏈接生成一個exe的可執行文件。
.o文件是鏈接文件,.a靜態庫文件,靠.o文件生成,作為一個庫外部程序提供函數,接口。生成.o文件。
linux中的o文件(目標文件)
目標文件(objectfile)即存放目標代碼的計算機文件,它常被“稱作”二進制文件(binaries)。目標文件包含著機器代碼(可直接被計算機中央處理器執行)以及代碼在運行時使用的數據,如重定位信息,如用于鏈接或調試的程序符號表(變量和函數的名字),此外還包括其他調試信息。
Linux下有3種目標文件形式:
可執行目標文件,可重定位目標文件和共享目標文件。也有對應的稱為可執行文件,目標文件,共享庫,只是說法不同,指的都是同樣的東西。
可執行目標文件:包含二進制代碼和數據,可以在存儲器中直接執行。
可重定位目標文件:包含二進制代碼和數據,可以在編譯時與其他可重定位目標文件合并起來的,創建一個可執行目標文件。
共享目標文件:是一種特殊的可重定位目標文件,可以在加載或者運行時被動態加載到存儲器并鏈接。
事實上,編譯器和匯編器生成可重定位目標文件(包含共享目標文件)。鏈接器生成可執行目標文件。
Linux下目標文件文件格式:
由于編譯后的中間文件(Windows下的.obj和Linux下的.o),動態鏈接庫和靜態鏈接庫(Windows下的.lib.dll和Linux下的.a.so),跟可執行文件的內容和結構相似,所以一般跟可執行文件一起采用同一種文件格式存儲。
linux中的a文件(靜態庫文件)
.a文件,是LINUX系統中的靜態鏈接庫文件。
所謂靜態鏈接是指把要調用的函數或者過程鏈接到可執行文件中,成為可執行文件的一部分。當多個程序都調用相同函數時,內存中就會存在這個函數的多個拷貝,這樣就浪費了寶貴的內存資源。.so文件是共享庫文件(動態鏈接)。動態鏈接所調用的函數代碼并沒有被拷貝到應用程序的可執行文件中去,而是僅僅在其中加入了所調用函數的描述信息(往往是一些重定位信息),僅當應用程序被裝入內存開始運行時,在操作系統的管理下,才在應用程序與相應的.so之間建立鏈接關系。
.a文件是多個.o文件的組合。.o文件就是對象文件,里面包含的內容就是01這樣的機器可執行的指令,當程序要執行時還需要進行鏈接(link).鏈接就是把多個.o文件鏈成一個可執行文件。