ไฟล์. la ของ libtool คืออะไร


คำตอบ:


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.laไฟล์เดียวที่ถูกสงวนไว้ระหว่างแพลตฟอร์มโดยlibtoolอนุญาตให้เข้าใจสิ่งที่เกิดขึ้นกับ:

  • การพึ่งพาห้องสมุด
  • ชื่อไฟล์จริง
  • เวอร์ชันไลบรารีและการแก้ไข

โดยไม่ต้องขึ้นอยู่กับการใช้งานแพลตฟอร์มเฉพาะของห้องสมุด


5
ดังนั้นคุณจะเปลี่ยนไฟล์. la ไปเป็นไฟล์ lib ที่แชร์เฉพาะแพลตฟอร์มได้อย่างไรเช่น libfoo.la -> 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

ในกรณีที่ทุกคนต้องการปิดการใช้งานเนื้อหาในรุ่นนี้คุณสามารถใช้ -avoid-version ใน _la_LDFLAGS ของคุณแทน -version-info
laishiekai

14

ตามhttp://blog.flameeyes.eu/2008/04/14/what-about-those-la-filesพวกเขาจำเป็นต้องจัดการกับการพึ่งพา แต่การใช้ pkg-config อาจเป็นตัวเลือกที่ดีกว่า:

ในโลกที่สมบูรณ์แบบทุกไลบรารีคงที่ที่ต้องพึ่งพาจะมีไฟล์. pc ของตัวเองสำหรับ pkg-config และทุกแพ็คเกจที่พยายามลิงก์แบบคงที่ไปยังไลบรารีนั้นจะใช้ pkg-config --static เพื่อให้ไลบรารี่เชื่อมโยง


10

ฉันพบคำอธิบายที่ดีมากเกี่ยวกับไฟล์. la ที่นี่http://openbooks.sourceforge.net/books/wga/dealing-with-lไลบรารี.html

สรุป (วิธีที่ฉันเข้าใจ): เนื่องจาก libtool เกี่ยวข้องกับไลบรารีแบบสแตติกและแบบไดนามิกภายใน (ผ่าน --diable-shared หรือ --disable-static) มันจะสร้าง wrapper บนไฟล์ไลบรารีที่มันสร้าง พวกเขาจะถือว่าเป็นไฟล์ไลบรารีไบนารีที่มีในสภาพแวดล้อมที่รองรับ libtool

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.