.la
ไฟล์ของ libtool มีไว้เพื่ออะไร? พวกเขาจะใช้กับวัตถุที่ใช้ร่วมกันได้อย่างไร
.la
ไฟล์ของ libtool มีไว้เพื่ออะไร? พวกเขาจะใช้กับวัตถุที่ใช้ร่วมกันได้อย่างไร
คำตอบ:
เป็นไฟล์ข้อความที่มีคำอธิบายของไลบรารี
อนุญาตให้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
อนุญาตให้เข้าใจสิ่งที่เกิดขึ้นกับ:
โดยไม่ต้องขึ้นอยู่กับการใช้งานแพลตฟอร์มเฉพาะของห้องสมุด
libtool
การเชื่อมโยงไฟล์วัตถุ ( gnu.org/software/libtool/manual/html_node/Using-Automake.html ) แต่ถ้าฉันต้องการกระจายห้องสมุดโดยไม่ต้อง. la มันหมายความว่ามันจะยากที่จะเชื่อมโยง ด้วยการใช้ Cygwin หรือ mingw?
ตามhttp://blog.flameeyes.eu/2008/04/14/what-about-those-la-filesพวกเขาจำเป็นต้องจัดการกับการพึ่งพา แต่การใช้ pkg-config อาจเป็นตัวเลือกที่ดีกว่า:
ในโลกที่สมบูรณ์แบบทุกไลบรารีคงที่ที่ต้องพึ่งพาจะมีไฟล์. pc ของตัวเองสำหรับ pkg-config และทุกแพ็คเกจที่พยายามลิงก์แบบคงที่ไปยังไลบรารีนั้นจะใช้ pkg-config --static เพื่อให้ไลบรารี่เชื่อมโยง
ฉันพบคำอธิบายที่ดีมากเกี่ยวกับไฟล์. la ที่นี่http://openbooks.sourceforge.net/books/wga/dealing-with-lไลบรารี.html
สรุป (วิธีที่ฉันเข้าใจ): เนื่องจาก libtool เกี่ยวข้องกับไลบรารีแบบสแตติกและแบบไดนามิกภายใน (ผ่าน --diable-shared หรือ --disable-static) มันจะสร้าง wrapper บนไฟล์ไลบรารีที่มันสร้าง พวกเขาจะถือว่าเป็นไฟล์ไลบรารีไบนารีที่มีในสภาพแวดล้อมที่รองรับ libtool