在linux中,「.o」文件指的是目標文件,「.o」是object的縮寫;linux中的「.o」文件相當於windows中的「.obj」文件,目標文件包含機器代碼以及代碼在運行時使用的數據,如重定位信息,如用於鏈接或調試的程序符號表,此外還包括其他調試信息。
本教學操作環境:linux7.3系統、Dell G3電腦。
.o 就是object, 也就相當於windows下編譯的obj檔, 俗稱目標檔.
目標檔(objectfile)即存放目標程式碼的電腦文件,它常被「稱作」二進位檔案(binaries)。目標檔案包含著機器碼(可直接被計算機中央處理器執行)以及代碼在運行時使用的數據,如重定位信息,如用於鏈接或調試的程序符號表(變量和函數的名字),此外還包括其他調試資訊。
Linux下方有3種目標文件形式:
可執行目標文件,可重定位目標文件和共用目標文件。也有對應的稱為可執行文件,目標文件,共享庫,只是說法不同,指的都是同樣的東西。
可執行目標檔案:包含二進位程式碼和數據,可以在記憶體中直接執行。
可重定位目標檔案:包含二進位程式碼和數據,可以在編譯時與其他可重定位目標檔案合併起來的,建立一個可執行目標檔案。
共用目標文件:是一種特殊的可重定位目標文件,可以在載入或執行時被動態載入到記憶體並連結。
事實上,編譯器和組譯器產生可重定位目標檔(包含共用目標檔)。連結器產生可執行目標檔。
Linux下目標檔案檔案格式:
由於編譯後的中間檔案(Windows下的.obj和Linux下的.o),動態連結函式庫與靜態連結庫(Windows下的.lib.dll和Linux下的.a.so),跟可執行檔的內容和結構相似,所以一般跟可執行檔一起採用同一種文件格式儲存。
擴充知識:
#產生.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中o檔是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!