5
มีใบอนุญาต LGPL ที่แก้ไขแล้วซึ่งอนุญาตให้มีการเชื่อมโยงแบบสแตติก
LGPLต้องการให้ใช้หากโปรแกรมใช้ไลบรารี LGPL-ed ผู้ใช้จะต้องสามารถเชื่อมโยงโปรแกรมกับไลบรารีเวอร์ชันอื่น: ... d) ทำสิ่งใดสิ่งหนึ่งต่อไปนี้: 0) สื่อความหมายแหล่งที่มาที่น้อยที่สุดภายใต้เงื่อนไขของใบอนุญาตนี้และรหัสแอปพลิเคชันที่สอดคล้องกันในรูปแบบที่เหมาะสมสำหรับและภายใต้ข้อกำหนดที่อนุญาตให้ผู้ใช้สามารถรวมกันอีกครั้งหรือเชื่อมโยงแอปพลิเคชัน Combined Work ในลักษณะที่ระบุไว้ในส่วนที่ 6 ของ GNU GPL สำหรับถ่ายทอดแหล่งที่เกี่ยวข้อง 1) ใช้กลไกไลบรารีแบบแบ่งใช้ที่เหมาะสมสำหรับการลิงก์กับไลบรารี กลไกที่เหมาะสมคือกลไกหนึ่งที่ (a) ใช้งาน ณ เวลาที่สำเนาของ Library มีอยู่แล้วในระบบคอมพิวเตอร์ของผู้ใช้และ (b) จะทำงานอย่างถูกต้องกับ Library รุ่นที่แก้ไขซึ่งสามารถใช้งานร่วมกับรุ่นที่เชื่อมโยงได้ ... อย่างไรก็ตามในบางกรณีอาจทำให้เกิดปัญหาได้ โดยเฉพาะอย่างยิ่งโปรแกรม Haskell จะถูกรวบรวมแบบคงที่เกือบตลอดเวลา ยิ่งไปกว่านั้นคอมไพเลอร์ทำการปรับข้ามโมดูลให้เหมาะสมดังนั้นจึงเป็นไปไม่ได้ที่จะมีส่วนร่วมของโค้ดและแทนที่ด้วยโค้ดอื่น ดังนั้นจึงเป็นเรื่องยากมากที่จะตอบสนองเงื่อนไขนี้ (ดูลิงค์นี้ที่ Haskell Wiki) การเชื่อมโยงแบบไดนามิกจะเป็นวิธีแก้ปัญหา แต่ในหลายกรณีไม่สามารถทำได้ ตัวอย่างเช่น: บางแพลตฟอร์มอาจไม่มีการเชื่อมโยงแบบไดนามิกเลย บางภาษาไม่มีความเป็นไปได้ของการเชื่อมโยงแบบไดนามิก หรือไม่สามารถสร้างโมดูลหลายแพลตฟอร์มได้ ในบางกรณีการเชื่อมโยงแบบไดนามิกจะป้องกันการเพิ่มประสิทธิภาพที่สำคัญ แม้ว่าฉันจะบอกว่านี่เป็นปัญหาร้ายแรง แต่ในภาษาอย่าง Haskell การสูญเสียประสิทธิภาพอาจมีความสำคัญ …