在linux中,「.a」檔案是靜態連結庫檔案;靜態連結庫檔案是指要呼叫的函數或是過程連結到可執行檔中,成為可執行檔的一部分,動態連結所呼叫的函數程式碼並沒有被拷貝到應用程式的可執行檔中去,而是在其中加入了所呼叫函數的描述資訊。
本教學操作環境:linux7.3系統、Dell G3電腦。
.a文件,是LINUX系統中的靜態連結庫文件。
所謂靜態連結是指把要呼叫的函數或程序連結到可執行檔中,成為執行檔的一部分。當多個程式都呼叫相同函數時,記憶體中就會存在這個函數的多個拷貝,這樣就浪費了寶貴的記憶體資源。 .so檔案是共享庫檔案(動態連結)。動態連結所呼叫的函數程式碼並沒有被拷貝到應用程式的可執行檔中去,而是僅僅在其中加入了所呼叫函數的描述資訊(往往是一些重定位資訊),僅當應用程式被裝入記憶體開始運作時,在作業系統的管理下,才在應用程式與對應的.so之間建立連結關係。
.a檔案是多個.o檔案的組合。 .o檔案就是物件文件,裡麵包含的內容就是01這樣的機器可執行的指令,當程式要執行時還需要進行連結(link).連結就是把多個.o檔案鍊成一個執行檔。
擴充知識
.o 就是object, 也就相當於windows下編譯的obj檔, 俗稱目標檔.
#. a 就是archive, 也就相當於windows的VC下編譯的lib文件, 俗稱靜態庫文件.
.o文件是鏈接文件,.a是靜態庫文件,靠.o文件生成,作為一個庫為外部程式提供函數,介面。
生成.o文件:
gcc -c test.o test.c
生成.a文件:
ar cqs test.a test.o
.o 就相當於windows裡的obj文件,一個.c或.cpp檔對應一個.o檔
.a 是好多個.o合在一起,用於靜態連接,即STATIC mode,多個.a可以連結產生一個exe的可執行檔
.so是shared object,用於動態連線的,和windows的dll差不多,使用時才載入
#推薦學習:Linux影片教學
#以上是linux中.a是什麼文件的詳細內容。更多資訊請關注PHP中文網其他相關文章!