[linux] .so,.la和.a庫文件有什麼區別?



Answers

Question

我知道一個.so文件是一種動態庫(大量的線程可以共享這些庫,因此不需要在內存中擁有多個副本)。 但.a.la什麼.la ? 這些都是靜態庫嗎?

如果動態庫與靜態庫相比有很大優勢,為什麼仍然有很多靜態庫?

我也想知道加載庫的基本機制(這兩種類型)以及在某處使用庫​​中的一段代碼時如何調用它。 我應該學習哪一部分內核? 我應該知道什麼相關的Linux命令/實用程序才能知道進程如何運行? (我現在只知道ld命令)

什麼時候應該嘗試將代碼構建到.so.a ? 哪一個更好?

[mirror@home ins_openvpn]$ ls lib/openvpn/plugins/ -l
total 96
-rw-r--r-- 1 mirror mirror 22892 Sep  2 23:25 openvpn-plugin-auth-pam.a
-rwxr-xr-x 1 mirror mirror   931 Sep  2 23:25 openvpn-plugin-auth-pam.la
-rwxr-xr-x 1 mirror mirror 23621 Sep  2 23:25 openvpn-plugin-auth-pam.so
-rw-r--r-- 1 mirror mirror 17228 Sep  2 23:25 openvpn-plugin-down-root.a
-rwxr-xr-x 1 mirror mirror   932 Sep  2 23:25 openvpn-plugin-down-root.la
-rwxr-xr-x 1 mirror mirror 18805 Sep  2 23:25 openvpn-plugin-down-root.so



Links