2008-10-31 9 views
7

내 응용 프로그램이 libsamplerate.a와 연결됩니다. 최종 바이너리 배포를 쉽게하기 위해이 작업을하고 있습니다.GCC 컴파일 정적 라이브러리에는 무엇이 들어 있습니까?

.a 파일의 코드가 배포해야하는 다른 라이브러리에 따라 달라질 까봐 걱정됩니다.

하지만 그렇지 않다면 나는 예를 들어 여러 복사본을 포함하여 응용 프로그램을 너무 많이 부풀려서 걱정하고 있습니다. libc.

정확하게 libsamplerate.a 안에 있습니까? 그냥 libsamperate의 바이트 코드? 이상?

답변

5

정적 라이브러리 오브젝트 파일의 단지 모음입니다. 정적 라이브러리에 대해 프로그램을 컴파일하면 프로그램에서 사용하는 함수의 오브젝트 코드가 라이브러리에서 실행 파일로 복사됩니다. 정적 라이브러리에 연결해도 해당 라이브러리 외부의 함수는 코드에 포함되지 않습니다.

1

libsamplerate의 개체 코드입니다. 단일 라이브러리에 대해 정적으로 링크해도 모든 라이브러리가 정적으로 링크되지는 않습니다. 그게 나쁜거야.

6

.a 파일은 기본적으로 .o 파일의 묶음입니다. 이것을 ar 도구를 사용하여 시연 할 수 있습니다. 예를 들어

는 라이브러리의 내용을 표시합니다 :

ar -t libsamplerate.a 

처음부터 운영자와 파일을 만들려면 :

ar -r tim.a *.txt