내가 아는 한 그들은 도서관이지만 둘 사이의 차이점은 무엇입니까?
답변1
파일 .a
은 정적 라이브러리인 반면 .so
파일은 Windows의 DLL과 유사한 공유 개체(동적) 라이브러리입니다. 두 가지의 차이점에 대해 자세히 설명되어 있습니다.이 페이지.
답변2
다음으로 .a 파일은 "ar" 아카이브입니다. tar 아카이브와 달리 .o 또는 개체 파일을 저장하여 아카이브에서 추출하고 프로그램에 연결할 수 있습니다. 필요한 경우 ar을 사용하여 다른 파일을 저장할 수 있습니다.
-t 매개변수를 사용하여 ar 파일의 구성원 목록을 가져올 수 있습니다. 예를 들면 다음과 같습니다.
ar -t /usr/lib/libc.a
.so 파일은 "공유 개체" 파일이며 멤버가 가능한 한 빨리 로더에 연결될 수 있도록 링커가 사용할 추가 정보가 있습니다.
예를 들어 다음을 시도해 보세요.
objdump -T /lib/libc-2.11.1.so
(또는 libc.so의 모든 버전이 /lib 디렉토리에 있습니다.) .so 파일에는 다른 곳에서 파일을 찾거나 다른 것을 사용하도록 지시하는 링커 스크립트가 포함될 수도 있습니다.
흥미롭게도 .so 파일은 완전한 프로그램이 될 수도 있습니다. 예를 들어 다음을 실행해 보세요./lib/libc.so.6. (이것은 내 Ubuntu 20.04 시스템에서 작동합니다)