libtoolの.laファイルは何のためのものですか?


回答:


139

ライブラリの説明を含むテキストファイルです。

それは可能にlibtool、プラットフォームに依存しない名前を作成します。

たとえば、次の場所にlibfoo移動します。

Linuxの場合:

/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.lalibtool何が発生するかを理解できるようにすることで、プラットフォーム間で保持される唯一のファイルは次のとおりです。

  • ライブラリの依存関係
  • 実際のファイル名
  • ライブラリのバージョンとリビジョン

ライブラリの特定のプラットフォーム実装に依存しません。


5
あなたは、プラットフォームの特定に.laファイルをオンにするのでlibfoo.laのように、LIBファイルを共有する方法- > libfoo.so *。
theactiveactor

6
libfoo.laはメタ情報のみを保持することはできません。つまり、libfoo.la(テキストファイル)にlibfoo.so.xyzがどこにあるかを記述
Artyom

4
.laファイルを生成するために、libtool(たとえば、automakeから)を使用する必要があるということですか?libtoolオブジェクトファイル(gnu.org/software/libtool/manual/html_node/Using-Automake.html)をリンクすることは信頼できますが、.laなしでライブラリを配布したい場合、リンクするのが非常に難しいことを意味しますCygwinまたはmingwを使用してそれを使って?
dma_k

誰かがこのバージョンのものを無効にしたい場合、-version-infoの代わりに_la_LDFLAGSで-avoid-versionを使用できます
laishiekai

14

http://blog.flameeyes.eu/2008/04/14/what-about-those-la-filesによると、依存関係を処理するために必要です。しかし、pkg-configを使用する方が良いオプションかもしれません:

完全な世界では、依存関係を必要とするすべての静的ライブラリには、pkg-config用の独自の.pcファイルがあり、そのライブラリに静的にリンクしようとするすべてのパッケージは、pkg-config --staticを使用してライブラリをリンクします。


10

私はここで.laファイルについて非常に良い説明を見つけました http://openbooks.sourceforge.net/books/wga/dealing-with-libraries.html

概要(私が理解した方法):libtoolは静的ライブラリと動的ライブラリを内部で(--diable-sharedまたは--disable-staticを介して)処理するため、ビルドするライブラリファイルにラッパーを作成します。これらは、libtoolがサポートする環境ではバイナリライブラリファイルとして扱われます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.