[發明專利]一種構造中間庫的方法有效
| 申請號: | 200610149661.6 | 申請日: | 2006-10-16 |
| 公開(公告)號: | CN101165648A | 公開(公告)日: | 2008-04-23 |
| 發明(設計)人: | 程圣宇;李翌;繆敬 | 申請(專利權)人: | 中興通訊股份有限公司 |
| 主分類號: | G06F9/44 | 分類號: | G06F9/44 |
| 代理公司: | 信息產業部電子專利中心 | 代理人: | 郭禾 |
| 地址: | 518057廣東省深圳市南山區*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 構造 中間 方法 | ||
技術領域
本發明涉及一種軟件優化方法,尤其涉及一種嵌入式系統中對共享庫的優化方法,具體涉及一種嵌入式系統中構造中間庫的方法。
本發明主要應用于嵌入式系統軟件中,也可用于普通的PC機軟件和服務器軟件系統中。
背景技術
在支持動態鏈接的系統中,一個應用程序通常依賴一個或多個共享庫,一個共享庫也可能會依賴一個或多個其它的共享庫。這種依賴關系模型如附圖1所示。
嵌入式系統的存儲資源通常十分有限,而且對響應速度要求較高。嵌入式系統的專用性使得開發人員有可能采用某些特殊的技術手段對嵌入式軟件進行優化,達到降低成本,提高性能的目的。
許多編譯鏈接工具(如GNU?gcc、ld等)提供了-T、-R等編譯鏈接選項來對共享庫和應用程序進行優化。在編譯鏈接共享庫時,使用連接器的-T選項把共享庫的虛擬地址映射到應用程序的一維虛擬地址空間中(為方便表述,本文后面把這類共享庫稱為映射庫),編譯鏈接應用程序時,使用連接器的-R選項從映射庫中讀入符號表,具體實施流程如附圖2所示,采用這種方式編譯鏈接的應用程序的虛擬地址空間可以按照圖3布局。
實踐表明,上述方法可使目標文件的大小減少20%~30%(不同體系結構略有不同),而且程序運行時的響應速度更快。
但是,映射庫失去了動態鏈接特性,普通動態加載機制不再有效。通常情況下,這并不成問題,只需要按照上述方法把相關的共享庫和應用程序重新編譯鏈接就可以了。但是,在嵌入式系統開發中,經常會遇到下面這種情況:
如附圖1所示,某些應用程序沒有源代碼,只有二進制可執行文件(為方便描述,本文后面把這類軟件稱為第三方軟件),而第三方軟件依賴共享庫有源代碼。
由于第三方軟件所依賴的共享庫有源代碼,因此可以按照上述方法,把這些共享庫編譯鏈接成映射庫,從而節省20%~30%的存儲空間。但是,如前面所述,映射庫不再適用于普通的動態加載和動態鏈接機制,而第三方軟件又沒有源代碼,不能重新編譯鏈接。因此,有第三方軟件存在的場合,很難使用上述方法對嵌入式系統軟件進行優化。
發明內容
為了克服現有技術中存在的問題,本發明提出一種構造中間庫的方法,在不對第三方軟件做任何修改的前提下,通過構造中間庫,解決了上述難題。
本發明具體是這樣實現的:
一種構造中間庫的方法,其特征在于,包括如下步驟:
第1步,生成實現函數跳轉的中間文件;
第2步,為每個映射庫生成一個初始化文件;
第3步,編譯鏈接中間文件和初始化文件,得到與映射庫一一對應的中間庫;
第4步,修改映射庫的文件名;
第5步,把中間庫放到目標文件系統中所對應的映射庫目錄下。
所述第一步,具體包括如下步驟:
(1)分析映射庫的符號表,為映射庫生成一個符號列表文件;
(2)從第三方軟件的符號表中獲取第三方軟件引用的外部符號;
(3)生成第三方軟件引用的外部符號以及每一個符號所對應的映射地址;
(4)生成實現函數跳轉的中間文件。
重復上述步驟(1)至(4),可為其他映射庫生成跳轉函數中間文件。
所述第2步中的為每個映射庫初始化,包括以下一個或幾個步驟:
加載映射庫的符號表;
完成映射庫中全局變量和全局對象的初始化;
完成虛函數表初始化;
完成映射庫中全局對象的析構操作。
所述全局變量和全局對象的初始化,可在中間庫中重定義映射庫中的全局變量或全局對象,并賦以映射庫中相同的初始值。
所述虛函數的初始化,通過把映射庫中各個虛函數表的內容拷貝到中間庫地址空間中實現。
由于第三方軟件不能按照普通的動態加載和動態鏈接的方式調用映射庫中的函數,也不能正確地訪問映射庫中的全局變量和全局對象。本發明通過為每一個映射庫構造一個中間庫,在中間庫內部完成函數跳轉、全局變量和全局對象初始化等操作,解決了上述難題。
采用本發明所述方法,通過構造中間庫,解決了第三方軟件不能訪問映射庫中的函數和全局變量的難題:把共享庫編譯鏈接為映射庫,雖然增加了一些中間庫,但是由于這些中間庫都非常小,總體來看,整個軟件系統的大小可減少20%~30%;并且應用程序的運行時響應速度也更快。軟件變小意味著存儲空間需求的減少,也就意味著硬件成本的降低,響應速度的提高意味更好的客戶體驗和更高的市場占有率。
附圖說明
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于中興通訊股份有限公司,未經中興通訊股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/200610149661.6/2.html,轉載請聲明來源鉆瓜專利網。





