Libraries

.a 和 .so 文件有什麼區別?

  • January 29, 2014

據我了解,它們是庫,但是兩者之間有什麼區別?

文件.a是靜態庫,而.so文件是類似於 Windows 上的 DLL 的共享對象(動態)庫。**此頁面**上有一些有關兩者之間差異的詳細資訊。

作為後續,.a 文件是一個“ar”檔案。與 tar 存檔不同,它儲存 .o 或目標文件,允許將它們從存檔中拉出,並連結到程序中,等等。如果需要,您可以使用 ar 來儲存其他文件。

您可以使用 -t 參數獲取 ar 文件的成員列表,例如:

ar -t /usr/lib/libc.a

.so 文件是一個“共享對象”文件,它有更多資訊可供連結器使用,以便成員可以盡快連結到載入程序。

例如,嘗試:

objdump -T /lib/libc-2.11.1.so

(或 /lib 目錄中的任何版本的 libc.so。)請注意,.so 文件也可以只包含一個連結描述文件,指示它在其他地方查找文件,或使用其他內容。

有趣的是,.so 文件也可以是一個成熟的程序。例如,嘗試執行*/lib/libc.so.6*。(遺憾的是,這最後一部分似乎不適用於更現代的系統。並不是說這是一個很大的損失。)

引用自:https://unix.stackexchange.com/questions/13192