내가 이해하는 한 라이브러리는 라이브러리이지만 둘 사이의 차이점은 무엇입니까?
댓글
- 관련 게시물- .so, .la 및 .a 라이브러리의 차이점 ' 파일?
답변
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은 ' 동적 라이브러리가 아니라는 메시지와 함께 반환됩니다.