[linux] libtool의 .la 파일은 무엇인가요?

libtool의 .la파일은 무엇입니까? 공유 객체와 어떻게 사용됩니까?



답변

라이브러리에 대한 설명이 포함 된 텍스트 파일입니다.

libtool플랫폼 독립적 인 이름을 만들 수 있습니다 .

예를 들어 다음으로 libfoo이동하십시오.

리눅스에서 :

/lib/libfoo.so       # Symlink to shared object
/lib/libfoo.so.1     # Symlink to shared object
/lib/libfoo.so.1.0.1 # Shared object
/lib/libfoo.a        # Static library
/lib/libfoo.la       # 'libtool' library

아래에서 Cygwin에서 :

/lib/libfoo.dll.a    # Import library
/lib/libfoo.a        # Static library
/lib/libfoo.la       # libtool library
/bin/cygfoo_1.dll    # DLL

Windows MinGW에서 :

/lib/libfoo.dll.a    # Import library
/lib/libfoo.a        # Static library
/lib/libfoo.la       # 'libtool' library
/bin/foo_1.dll       # DLL

다음 과 같은 일을 이해함으로써 libfoo.la플랫폼간에 보존되는 유일한 파일입니다 libtool.

  • 라이브러리 의존성
  • 실제 파일 이름
  • 라이브러리 버전 및 개정

라이브러리의 특정 플랫폼 구현에 의존하지 않습니다.


답변

http://blog.flameeyes.eu/2008/04/14/what-about-those-la-files 에 따르면 종속성을 처리해야합니다. 그러나 pkg-config를 사용하는 것이 더 나은 옵션 일 수 있습니다.

완벽한 세상에서 종속성이 필요한 모든 정적 라이브러리에는 pkg-config에 대한 고유의 .pc 파일이 있으며 해당 라이브러리에 정적으로 연결하려는 모든 패키지는 pkg-config –static을 사용하여 라이브러리를 연결합니다.


답변

http://openbooks.sourceforge.net/books/wga/dealing-with-libraries.html에서 .la 파일에 대한 매우 좋은 설명을 찾았습니다.

요약 (내가 이해 한 방법) : libtool은 내부적으로 –diable-shared 또는 –disable-static을 통해 정적 및 동적 라이브러리를 처리하므로 빌드 한 라이브러리 파일에 래퍼를 만듭니다. libtool 지원 환경에서 이진 라이브러리 파일로 처리됩니다.


답변