ฉันรู้ว่า.so
ไฟล์เป็นไลบรารีแบบไดนามิก (หลายเธรดสามารถแชร์ไลบรารีดังกล่าวได้ดังนั้นจึงไม่จำเป็นต้องมีมากกว่าหนึ่งสำเนาในหน่วยความจำ) แต่อะไรคือความแตกต่างระหว่าง.a
และ.la
? ไลบรารีสแตติกเหล่านี้ทั้งหมดหรือไม่
หาก libs แบบไดนามิกมีข้อได้เปรียบใหญ่กว่าแบบคงที่ทำไมทำไมยังคงมีห้องสมุดแบบคงที่มากมาย?
ฉันต้องการทราบกลไกพื้นฐานในการโหลดไลบรารี่ (ทั้งสองชนิด) และวิธีการเรียกใช้โค้ดใน lib เมื่อมันถูกนำไปใช้ที่ไหนสักแห่ง ฉันควรศึกษาส่วนใดของเคอร์เนล และฉันควรรู้คำสั่ง / ยูทิลิตี้ที่เกี่ยวข้องกับ Linux เพื่อที่จะรู้ว่ากระบวนการทำงานอย่างไร? (ตอนนี้ฉันรู้เพียงld
คำสั่งเท่านั้น)
เมื่อฉันควรพยายามที่จะสร้างรหัสลง.so
หรือ.a
? อันไหนดีกว่า?
[mirror@home ins_openvpn]$ ls lib/openvpn/plugins/ -l
total 96
-rw-r--r-- 1 mirror mirror 22892 Sep 2 23:25 openvpn-plugin-auth-pam.a
-rwxr-xr-x 1 mirror mirror 931 Sep 2 23:25 openvpn-plugin-auth-pam.la
-rwxr-xr-x 1 mirror mirror 23621 Sep 2 23:25 openvpn-plugin-auth-pam.so
-rw-r--r-- 1 mirror mirror 17228 Sep 2 23:25 openvpn-plugin-down-root.a
-rwxr-xr-x 1 mirror mirror 932 Sep 2 23:25 openvpn-plugin-down-root.la
-rwxr-xr-x 1 mirror mirror 18805 Sep 2 23:25 openvpn-plugin-down-root.so