Static Library vs Dynamic Library

ในการเขียนโปรแกรมอย่างเช่น C/C++ Programming หลังจากที่เราเขียนเสร็จจะต้องทำการ Compile ให้เป็นภาษาเครื่อง หรือภาษา Assembly ก่อน ซึ่งหลังจาก Compile จะต้องทำ Linker เพื่อเรียกใช้ Library ที่เราได้ทำ References อ้างอิงไว้ ใน Object File ตอน Compile ที่ถุกดึงเข้ามาเป้นส่วนหนึ่งของโปรแกรม เราสามารถทำ Link เพื่อเรียกใช้ได้ 2 แบบ


Static Library

การทำ Static Library จะเป็นการนำ Library มารวมอยู่ในโปรแกรม Executeable File จะทำให้ Size ของโปรแกรม Executeable File มีขนาดใหญ่เกินความจำเป็น เนื่องจาก Library ที่นำมาทำ Link อาจจะเป็น Standard Library ที่โปรแกรมอื่น ๆ ต้องการใช้ ทำให้เกิดการใช้ซ้ำ และจะกินเนื้อที่ของ Memory แต่โปรแกรมก็จะทำงานได้รวดเร็ว หาก Library ที่เราทำ Link มีการแก้ไข จะต้องทำการ Compile โปรแกรมใหม่ ซึ่งช่วยลดปัญหาเรื่อง Compatible ของ Library ไป ซึ่งบน OS จะมีนามสกุลไฟล์ ได้แก่

  • Windows .lib (Library)
  • Linux .a (Archive)

Dynamic Library

การทำ Dynamic Library หรือ Shared Library เพื่อแก้ปัญหาเรื่อง Size ของ Executeable File โดยทำ References อ้างอิงไว้ ทำให้ Size ของโปรแกรม Executeable File มีขนาดเล็กลง รวมถึงพื้นที่บน Memory โดยไม่จำเป็นต้องโหลด Library สำหรับทุก ๆ Process หรือ ทุก ๆ Program ทำให้เวลาโหลดเร็วขึ้นหาก Library ถุกโหลดอยู่บน Memory แล้ว แต่การทำงานจะช้าเพราะไม่ได้ถุก Compile เป็นโปรแกรมเดียวกัน และจะมีปัญหาเรื่องของ Compatible ของ Library อาจจะต้องเขียนโปรแกรมใหม่เพื่อให้ Compatible ซึ่งบน OS จะมีนามสกุลไฟล์ ได้แก่

  • Windows .dll (Dynamic Link Library)
  • Linux .so (Shared Object)

อ่านเพิ่มเติม : https://apple.co/2qNcf9p, https://bit.ly/2vNl2v4https://bit.ly/2vKe0Hn


Leave a Reply

Your email address will not be published. Required fields are marked *