답변:
아카이브 라이브러리 (.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 와 같은 공유 라이브러리 파일에 대해 알아 보려면 파일 이름 지정 섹션 에도 유용한 정보가 있습니다 .
archive 및 기타입니다sharedobject