.so
파일이 일종의 동적 라이브러리 라는 것을 알고 있습니다 (많은 스레드가 그러한 라이브러리를 공유 할 수 있으므로 메모리에 파일 사본을 두 개 이상 가질 필요가 없습니다). 그러나 .a
와 의 차이점은 무엇 .la
입니까? 이것들은 모두 정적 라이브러리입니까?
동적 라이브러리가 정적 라이브러리보다 큰 장점을 가지고 있다면 여전히 정적 라이브러리가 많은 이유는 무엇입니까?
또한 라이브러리 (두 종류)를로드하는 기본 메커니즘과 어딘가에서 사용될 때 lib의 코드 조각이 어떻게 호출되는지 알고 싶습니다. 커널의 어느 부분을 연구해야합니까? 프로세스가 어떻게 실행되고 있는지 알기 위해서는 어떤 관련 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