Wiem, że .so
plik jest rodzajem biblioteki dynamicznej (wiele wątków może współdzielić takie biblioteki, więc nie trzeba mieć więcej niż jednej kopii w pamięci). Ale jaka jest różnica między .a
i .la
? Czy to są wszystkie biblioteki statyczne?
Jeśli biblioteki dynamiczne mają duże zalety w stosunku do bibliotek statycznych, dlaczego wciąż istnieje wiele bibliotek statycznych?
Chcę również poznać podstawowy mechanizm ładowania bibliotek (oba rodzaje) oraz sposób wywoływania fragmentu kodu w bibliotece lib, gdy jest ona gdzieś używana. Którą część jądra powinienem studiować? A jakie pokrewne polecenie / narzędzie Linux powinienem wiedzieć, aby wiedzieć, jak działa proces? (Do tej ld
pory znam tylko polecenie)
Kiedy powinienem spróbować wbudować kod w .so
lub .a
? Który jest lepszy?
[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