為Linux 應用程式編寫 DLL(轉)

BSDLite發表於2007-08-11
為Linux 應用程式編寫 DLL(轉)[@more@]外掛和 DLL 通常是用來無須編寫整個新應用程式而新增功能的極好方法。在 Linux 中,外掛和 DLL 以動態庫形式實現。電子商務顧問兼設計師 Allen Wilson 介紹了動態庫並且向您演示瞭如何在某個應用程式正在執行之後使用動態庫來改變該應用程式。
Internet 瀏覽器使用者非常熟悉外掛的概念。從 Web 上下載外掛,通常這些外掛為瀏覽器的音訊、影片以及特殊效果提供增強支援。一般來講,在不更改原有應用程式的情況下,外掛為現有應用程式提供新功能。

DLL 是程式函式,它們在設計和構建應用程式時為該程式所知。設計應用程式的主程式時使用程式框架或底板,這些程式框架或底板在執行時選擇性地裝入所需的 dll,這些 dll 位於磁碟上同主程式分離的一些檔案中。這一打包和動態裝入提供了靈活的升級、維護、以及許可策略。

隨 Linux 一起交付的還有幾千條命令和應用程式,它們至少都需要 libc 庫函式。如果 libc 函式與每一個應用程式都打包在一起,那麼磁碟上將會出現幾千個相同函式的副本。Linux 構建這些應用程式,以使用通常所需的系統庫的單個系統級副本,而不浪費磁碟空間。Linux 甚至做得更好,每個需要公共系統庫函式的程式使用單個的系統級內的副本,一次性將該副本裝入到記憶體併為各程式所共享。
在 Linux 中,外掛和 dll 以動態庫形式實現。本文的餘下部分是在應用程式執行之後使用動態庫更改該應用程式的示例。

Linux 動態連結
Linux 中的應用程式以以下兩種方式之一連結到外部函式:要麼在構建時與靜態庫(lib*.a)靜態地連結,並且將庫程式碼包含在該應用程式的可執行檔案裡;要麼在執行時與共享庫(lib*.so)動態地連結。透過動態連結裝入器,將動態庫對映進應用程式的可執行記憶體中。在啟動應用程式之前,動態連結裝入器將所需的共享目標庫對映到應用程式的記憶體,或者使用系統共享的目標併為應用程式解析所需的外部引用。現在應用程式就可以執行了。

作為示例,下面有一個演示 Linux 中對動態連結庫的預設使用的小程式:
QUOTE:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-946904/,如需轉載,請註明出處,否則將追究法律責任。

為Linux 應用程式編寫 DLL(轉)
請登入後發表評論 登入
全部評論

相關文章