[c] .a 및 .so 파일이란 무엇입니까?

현재 C 응용 프로그램을 AIX 로 이식하려고하는데 혼란스러워합니다. .a 및 .so 파일이란 무엇이며 응용 프로그램을 빌드 / 실행할 때 어떻게 사용됩니까?



답변

아카이브 라이브러리 (.a)는 gcc에서 -c 옵션을 사용하여 프로그램을 컴파일 할 때 정적으로 링크됩니다. 따라서 라이브러리에 변경 사항이 있으면 코드를 다시 컴파일하고 빌드해야합니다.

.a 라이브러리에 비해 .so (공유 객체)의 장점은 런타임 동안 (즉, gcc에서 .o 파일 -o 옵션을 만든 후) 링크되어 있다는 것입니다. 따라서 .so 파일에 변경 사항이 있으면 기본 프로그램을 다시 컴파일 할 필요가 없습니다. 그러나 주 프로그램이 ln 명령으로 새 .so 파일에 연결되어 있는지 확인하십시오.

이렇게하면 .so 파일을 작성하는 데 도움이됩니다.
http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html

도움이 되었기를 바랍니다.


답변

.a는 정적 라이브러리입니다. 내부에 저장된 코드를 사용하면 코드를 가져 와서 자신의 바이너리에 포함시킵니다. Visual Studio에서이 파일은 .lib 파일입니다.

.so는 동적 라이브러리입니다. 그 안에 저장된 코드를 사용하면 자신의 바이너리에 포함되지 않습니다. 대신 방금 참조되었으므로 바이너리는 바이너리에 의존하며 so 파일의 코드는 런타임에 추가 /로드됩니다. Visual Studio / Windows에서 이러한 파일은 .dll 파일 (링크 정보가 포함 된 작은 .lib 파일)입니다.


답변

.a 파일은 일반적으로 정적으로 링크 된 라이브러리 (보다 정확하게 아카이브)이며

.so는 동적으로 링크 된 라이브러리입니다.

포트를 수행하려면이를 작성하기 위해 컴파일 된 소스 코드 또는 AIX 시스템에서 동등한 파일이 필요합니다.


답변

연결 단계에서 사용됩니다. .a파일은 정적으로 연결되고 .so파일은 정렬되어 있으므로 exe를 실행할 때마다 라이브러리가 필요합니다.

당신은 그들이 LIB 디렉토리의보고에 의해 저장되는 위치를 찾을 … 수 /usr/lib/lib그들의 대부분을 가지고 있고, 또한이 LIBRARY_PATH환경 변수.


답변

Wikipedia는이 정보의 적절한 출처입니다.

.a와 같은 정적 라이브러리 파일에 대해 배우려면 정적 라이브러리를 읽으 십시오.

.so read Library_ (computing) #Shared_libraries 와 같은 공유 라이브러리 파일에 대해 알아 보려면 파일 이름 지정 섹션 에도 유용한 정보가 있습니다 .


답변