.a와 .so 파일의 차이점은 무엇입니까?

내가 이해하는 한 라이브러리는 라이브러리이지만 둘 사이의 차이점은 무엇입니까?

댓글

답변

A .a 파일은 정적 라이브러리이고 .so 파일은 Windows의 DLL과 유사한 공유 객체 (동적) 라이브러리입니다. 이 페이지 .

댓글

  • .a는 프로그램의 일부로 만 포함될 수 있습니다. .so '는 " 가져올 수 " 프로그램이로드되는 동안
  • .a는 무엇을 의미합니까?
  • @hfrmobile a는 archive 를 의미합니다. 정적 라이브러리는 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 을 실행 해보세요. (슬프게도이 마지막 부분은 최신 시스템에서는 작동하지 않는 것 같습니다. “큰 손실이 아닙니다.)

댓글

  • Typo . ar -t /usr/lib/libc.a를 작성하려고합니다. 사실이 경우에는 -가 ' 필요하지 않은 것 같습니다. 또한 /lib/libc.so.6.는 일부 출력 만 인쇄합니다. ' full fledged program라고 부를지 모르겠습니다.
  • 그것 ' exec가 찾을 수있는 주요 기호가 있다는 점에서 본격적인 프로그램입니다.
  • .so에서 ldd를 실행할 수도 있습니다. div id = “7d6c8d4b54″>

s이며 사용하는 다른 라이브러리를 보여줍니다. Static은 ' 동적 라이브러리가 아니라는 메시지와 함께 반환됩니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다