Linux系統中o和a代表什麼?有何作用?

老男孩IT教育機構發表於2023-03-17

  在Linux系統中,“o”指的是目標檔案,即存放目的碼的計算機檔案;“a”指的是靜態庫檔案,是指要呼叫的函式或者過程連結到可執行檔案中,成為可執行檔案的一部分。接下來我們一起來看看詳細的內容介紹。

  O就是object,也就是相當於Windows下編譯的obj檔案,俗稱目標檔案。

  a就是archive,也就相當於Windows的VC下編譯的lib檔案,俗稱靜態庫檔案;多個.a可以連結生成一個exe的可執行檔案。

  .o檔案是連結檔案,.a靜態庫檔案,靠.o檔案生成,作為一個庫外部程式提供函式,介面。生成.o檔案。

  Linux中的O檔案

  目標檔案即存放目的碼的計算機檔案,它常被稱作二進位制檔案。目標檔案包含著機器程式碼以及程式碼在執行時使用的資料,如重定位資訊,如用於連結或除錯的程式符號表,此外還包括其他除錯資訊。

  Linux下3種目標檔案形式

  可執行目標檔案,可重定位目標檔案和共享目標檔案。也有對應的稱為可執行檔案,目標檔案,共享庫,只是說法不同,指的都是同樣的東西。

  可執行目標檔案:包含二進位製程式碼和資料,可以在儲存器中直接執行。

  可重定位目標檔案:包含二進位製程式碼和資料,可以在編譯時與其他可重定位目標檔案合併起來的,建立一個可執行目標檔案。

  共享目標檔案:是一種特殊的可重定位目標檔案,可以在載入或者執行時被動態載入到儲存器並連結。

  Linux下目標檔案檔案格式

  由於編譯後的中間檔案,動態連結庫和靜態連結庫,跟可執行檔案的內容和結構相似,所以一般跟可執行檔案一起採用同一種檔案格式儲存。

  Linux中的a檔案

  a檔案,是Linux系統中的靜態連結庫檔案。

  所謂靜態連結是指把要呼叫的函式或者過程連結到可執行檔案中,成為可執行檔案的一部分。當多個程式都呼叫相同函式時,記憶體中就會存在這個函式的多個複製,這樣就浪費了寶貴的記憶體資源。.so檔案是共享庫檔案。動態連結所呼叫的函式程式碼並沒有被複製到應用程式的可執行檔案中去,而是僅僅在其中加入了所呼叫函式的描述資訊,僅當應用程式被裝入記憶體開始執行時,在作業系統的管理下,才在應用程式與相應的.so之間建立連結關係。

  .a檔案是多個.o檔案的組合。.o檔案就是物件檔案,裡麵包含的內容就是01這樣的機器可執行的指令,當程式要執行時還需要進行連結.連結就是把多個.o檔案鏈成一個可執行檔案。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69952527/viewspace-2940227/,如需轉載,請註明出處,否則將追究法律責任。

相關文章