답변:
아카이브 라이브러리 (.a)는 gcc에서 -c 옵션을 사용하여 프로그램을 컴파일 할 때 정적으로 링크됩니다. 따라서 라이브러리에 변경 사항이 있으면 코드를 다시 컴파일하고 빌드해야합니다.
.a 라이브러리에 비해 .so (공유 객체)의 장점은 런타임 동안 (즉, gcc에서 .o 파일 -o 옵션을 만든 후) 링크되어 있다는 것입니다. 따라서 .so 파일에 변경 사항이 있으면 기본 프로그램을 다시 컴파일 할 필요가 없습니다. 그러나 주 프로그램이 ln 명령으로 새 .so 파일에 연결되어 있는지 확인하십시오.
이렇게하면 .so 파일을 작성하는 데 도움이됩니다. http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html
도움이 되었기를 바랍니다.
pic
(위치 독립적 코드)와 관련이 있습니까?
.a는 정적 라이브러리입니다. 내부에 저장된 코드를 사용하면 코드를 가져 와서 자신의 바이너리에 포함시킵니다. Visual Studio에서이 파일은 .lib 파일입니다.
.so는 동적 라이브러리입니다. 그 안에 저장된 코드를 사용하면 자신의 바이너리에 포함되지 않습니다. 대신 방금 참조되었으므로 바이너리는 바이너리에 의존하며 so 파일의 코드는 런타임에 추가 /로드됩니다. Visual Studio / Windows에서 이러한 파일은 .dll 파일 (링크 정보가 포함 된 작은 .lib 파일)입니다.
.lib
파일을 .dll
가져 오기 라이브러리라고합니다.
.a 파일은 일반적으로 정적으로 링크 된 라이브러리 (보다 정확하게 아카이브)이며
.so는 동적으로 링크 된 라이브러리입니다.
포트를 수행하려면이를 작성하기 위해 컴파일 된 소스 코드 또는 AIX 시스템에서 동등한 파일이 필요합니다.
Wikipedia는이 정보의 적절한 출처입니다.
.a와 같은 정적 라이브러리 파일에 대해 배우려면 정적 라이브러리를 읽으 십시오.
.so read Library_ (computing) #Shared_libraries 와 같은 공유 라이브러리 파일에 대해 알아 보려면 파일 이름 지정 섹션 에도 유용한 정보가 있습니다 .
a
rchive 및 기타입니다s
haredo
bject