[發明專利]一種動態鏈接方法及系統有效
| 申請號: | 201310121116.6 | 申請日: | 2013-04-09 |
| 公開(公告)號: | CN103218428A | 公開(公告)日: | 2013-07-24 |
| 發明(設計)人: | 劉高科 | 申請(專利權)人: | 深圳市九洲電器有限公司 |
| 主分類號: | G06F17/30 | 分類號: | G06F17/30 |
| 代理公司: | 深圳中一專利商標事務所 44237 | 代理人: | 張全文 |
| 地址: | 518000 廣東省深圳市南*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 動態 鏈接 方法 系統 | ||
技術領域
本發明屬于計算機軟件技術領域,尤其涉及一種動態鏈接方法及系統。
背景技術
動態鏈接庫(英文:Dynamic?Link?Library,簡稱:DLL)是一個包含可由多個程序同時使用的代碼和數據的庫,DLL不是一個可執行文件。動態鏈接提供了一種方法,使進程可以調用不屬于其可執行代碼的函數,函數的可執行代碼位于一個DLL中,該DLL包含一個或多個已經被編譯、鏈接并與使用它們的進程分開存儲的函數。DLL還有助于共享數據和資源。
但是動態鏈接依賴于系統的支持,在Linux系統下通過動態鏈接的函數就可以完成動態鏈接庫的鏈接,而一些系統不支持動態鏈接。
發明內容
本發明實施例的目的在于提供一種動態鏈接方法及系統,以解決現有技術存在的,一些系統不支持動態鏈接,應用無法調用動態鏈接庫的問題。
本發明的實施例是這樣實現的,一種動態鏈接方法,所述方法包括以下步驟:
讀取可執行連接格式ELF的庫,所述可執行連接格式ELF的庫包括:庫函數的跳轉地址和庫函數的代碼段;
復制庫函數的跳轉地址至應用的跳轉表預留空間,復制庫函數的代碼段至應用的應用部分預留空間,所述庫函數的代碼段在庫中和應用中的地址一致;
應用調用庫函數時,在應用的跳轉表中查詢庫函數的跳轉地址,根據所述庫函數的跳轉地址,跳轉到庫函數的代碼段執行;
庫函數調用應用時,在應用的跳轉表中查詢應用對應的函數地址,根據所述應用對應的函數地址,跳轉到應用的代碼段執行。
本發明的實施例的另一目的在于提供一種動態鏈接系統,所述系統包括:
讀取單元,用于讀取可執行連接格式ELF的庫,所述可執行連接格式ELF的庫包括:庫函數的跳轉地址和庫函數的代碼段;
復制單元,用于復制庫函數的跳轉地址至應用的跳轉表預留空間,復制庫函數的代碼段至應用的應用部分預留空間,所述庫函數的代碼段在庫中和應用中的地址一致;
第一調用單元,用于應用調用庫函數時,在應用的跳轉表中查詢庫函數的跳轉地址,根據所述庫函數的跳轉地址,跳轉到庫函數的代碼段執行;
第二調用單元,用于庫函數調用應用時,在應用的跳轉表中查詢應用對應的函數地址,根據所述應用對應的函數地址,跳轉到應用的代碼段執行。
本發明實施例通過將庫函數的跳轉地址以及庫函數的代碼段復制到應用中,使得應用和庫函數可以相互調用,解決了現有技術存在的,一些系統不支持動態鏈接的情況下,應用無法調用動態鏈接庫的問題。
附圖說明
為了更清楚地說明本發明實施例中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
圖1是本發明實施例提供的動態鏈接方法的實現流程圖;
圖2是本發明實施例提供的可執行連接格式的庫的結構示意圖;
圖3是本發明實施例提供的復制之前的應用的結構示意圖;
圖4是本發明實施例提供的復制之后的應用的結構示意圖;
圖5是本發明實施例提供的動態鏈接系統的模塊結構圖。
具體實施方式
為了使本發明的目的、技術方案及優點更加清楚明白,以下結合附圖及實施例,對本發明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發明,并不用于限定本發明。
本發明實施例提供了動態鏈接方法,所述方法的執行主體是動態庫鏈接系統,所述方法如圖1所示,具體步驟包括:
S11、讀取可執行連接格式(英文:Executable?and?Linkable?Format,簡稱:ELF)的庫。
在步驟所述S11之前,ELF的庫通過編譯鏈接DLL和手工創建的跳轉表構成,圖2為可執行連接格式的庫的結構示意圖,所述ELF的庫包括現行輸出跳轉表、虛擬輸入跳轉表和應用部分,所述現行輸出跳轉表存儲庫函數的跳轉地址和屬性,應用部分存儲了庫函數的代碼段、數據和靜態數據。
S12、復制所述庫函數的跳轉地址至應用的跳轉表預留空間,復制庫函數的代碼段至應用的應用部分預留空間。
需要說明的是,庫函數的跳轉地址用于應用或者其它函數調用庫函數時,通過所述庫函數的跳轉地址找到庫函數的代碼段的位置;庫函數的代碼段從庫中復制到應用中,庫函數的代碼段存儲的地址不變,否則通過庫函數的跳轉地址無法準確找到庫函數的代碼段。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于深圳市九洲電器有限公司,未經深圳市九洲電器有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310121116.6/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種移動終端信息推送方法及裝置
- 下一篇:網絡標簽聚類方法和系統





