Libraries
.a 和 .so 文件有什麼區別?
據我了解,它們是庫,但是兩者之間有什麼區別?
文件
.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*。(遺憾的是,這最後一部分似乎不適用於更現代的系統。並不是說這是一個很大的損失。)