2009-08-06 34 views

回答

120

它是一個文本文件,包含庫的描述。

它允許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.la是平臺之間保留的唯一文件通過libtool允許理解與發生了什麼:

  • 庫的依賴
  • 實際文件名
  • 庫版本和修訂

不依賴在特定的平臺上實現圖書館。

+3

所以如何將.la文件轉換爲平臺特定的共享庫文件,如libfoo.la - > libfoo.so。* – theactiveactor 2009-12-31 15:39:31

+4

您可以' t libfoo.la僅保存元信息,即在libfoo.la(文本文件)中,你應該在哪裏找到libfoo.so.xyz – Artyom 2009-12-31 20:48:49

+4

是否意味着爲了生成.la文件,我需要使用libtool(例如automake )?可以依靠'libtool'鏈接目標文件(http://www.gnu.org/software/libtool/manual/html_node/Using-Automake.html),但如果我想分發一個沒有.la的庫,這意味着使用Cygwin或mingw連接它會非常困難? – 2010-06-01 14:22:21

7

根據http://blog.flameeyes.eu/2008/04/14/what-about-those-la-files,他們需要處理依賴關係。但是,使用pkg配置可能是一個更好的選擇:

在一個完美的世界裏,每一個靜態庫需要依賴會對pkg配置自己的.PC文件,每包試圖靜態鏈接到該庫將使用pkg-config --static來獲取庫鏈接。