답변:
.a
얼마 파일은 정적 라이브러리 .so
파일을 Windows에서 DLL 유사한 공유 객체 (동적) 라이브러리입니다. 이 페이지 의 차이점에 대한 자세한 정보가 있습니다.
.a
컴파일하는 동안 프로그램의 일부로 만 포함 할 수 있습니다. .so
프로그램을로드하는 동안 '가져 오기'를 수행 할 수 있습니다.
ar
유틸리티를 사용하여 생성 된 객체 파일의 모음입니다 . 자세한 정보는 여기
다음으로 .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 실행을 시도하십시오 . (슬프게도이 마지막 부분은 더 현대적인 시스템에서는 작동하지 않는 것 같습니다. 큰 손실이 아닙니다.)
ar -t /usr/lib/libc.a
. 실제로이 경우 -
에는 필요하지 않은 것 같습니다. 또한 /lib/libc.so.6.
일부 출력을 인쇄합니다. 내가 그것을 부를 지 모르겠다 full fledged program
.
ldd
.so에서 실행할 수도 있으며 사용하는 다른 라이브러리가 표시됩니다. 정적은 동적 라이브러리가 아니라는 메시지와 함께 반환됩니다.