專利名稱:可執(zhí)行文件的創(chuàng)建的制作方法
技術(shù)領域:
本發(fā)明涉及可執(zhí)行文件的創(chuàng)建,并尤其涉及將一組文件組合成單個可執(zhí)行文件。
背景技術(shù):
在軟件編程中,在創(chuàng)建軟件的可執(zhí)行版本期間,通常的做法是將多個文件(運行單位)組合成單個較大的可執(zhí)行文件,例如在MicrosoftTMWindowsTM編程環(huán)境中將兩個或更多個目標文件組合成動態(tài)鏈接庫,或在JavaTM編程環(huán)境中將兩個或多個類文件組合成單個jar文件。這種組合過程經(jīng)常被稱為連接編輯(或者在Java情況下被稱為部署)。(Microsoft和Windows是Microsoft Corporation在美國、其他國家或這兩者的商標。Java或所有基于Java的商標是Sun Microsystems,Inc在美國、其他國家或這兩者的商標)。
當以這種方式創(chuàng)建可執(zhí)行文件時,可要求兩個或多個運行單位和所述可執(zhí)行文件包含一個或多個具有特定值的數(shù)據(jù)實體。例如,在軟件組織中,盡管不存在法律上的要求,但是經(jīng)常存在這樣的內(nèi)部要求,即每個運行單位和執(zhí)行文件包含可讀的版權(quán)聲明。這對潛在的版權(quán)侵犯者是合理的警告,并且可使得更容易保護版權(quán)。
根據(jù)現(xiàn)有技術(shù),可將具有這種特定值的數(shù)據(jù)實體包含在每個運行單位內(nèi),例如通過包含設定為所需值例如“Copyright IBMTMCorp.2003”的靜態(tài)字符串。然后,該靜態(tài)字符串在組合過程中繼續(xù)存在,并因而也存在于可執(zhí)行文件內(nèi)。然而,作為此過程的結(jié)果,盡管滿足了軟件組織的內(nèi)部要求,但是如果例如通過組合10個運行單位創(chuàng)建可執(zhí)行文件,每個運行單位均包含這種靜態(tài)字符串,則該可執(zhí)行文件將包含該靜態(tài)字符串的10次出現(xiàn),每個運行單位一次。這會增加該可執(zhí)行文件的存儲需求,并且盡管這可適當解決其中存儲不受限制以及性能不成為問題的環(huán)境中的內(nèi)部要求,但是在其他環(huán)境中會導致性能降低,尤其是在一個復雜產(chǎn)品可包括數(shù)百個運行單位時。例如在手持便攜式設備例如那些提供移動電話功能的設備(蜂窩電話)或手持計算機例如個人電腦記事本(personal organiser)中,存在這種受限制的環(huán)境。(IBM是IBM公司在美國、其他國家或這兩者的注冊商標)。
發(fā)明內(nèi)容
根據(jù)第一方面,本發(fā)明提供了一種用于通過組合多個運行單位來創(chuàng)建可執(zhí)行文件的數(shù)據(jù)處理方法,該方法包括以下步驟讀取將被添加到該可執(zhí)行文件內(nèi)的第一運行單位;在第一運行單位內(nèi)定位被設定為第一字符串值的第一數(shù)據(jù)實體;匹配該第一數(shù)據(jù)實體和被設定為第二字符串值的第二數(shù)據(jù)實體,該第二數(shù)據(jù)實體來自以前添加到該可執(zhí)行文件內(nèi)的第二運行單位;以及將該第一運行單位添加到該可執(zhí)行文件內(nèi),而不添加該第一數(shù)據(jù)實體。
根據(jù)第二方面,本發(fā)明提供了一種用于通過組合多個運行單位來創(chuàng)建可執(zhí)行文件的數(shù)據(jù)處理裝置,該裝置包括用于讀取將被添加到該可執(zhí)行文件內(nèi)的第一數(shù)據(jù)實體的裝置;用于在第一運行單位內(nèi)定位被設定為第一字符串值的第一數(shù)據(jù)實體的裝置;用于匹配該第一數(shù)據(jù)實體和被設定為第二字符串值的第二數(shù)據(jù)實體的裝置,該第二數(shù)據(jù)實體來自以前添加到該可執(zhí)行文件內(nèi)的第二運行單位;以及用于將該第一運行單位添加到該可執(zhí)行文件內(nèi)而不添加該第一數(shù)據(jù)實體的裝置。
根據(jù)第三方面,本發(fā)明提供了一種包含這樣的指令的計算機程序產(chǎn)品,當該指令在數(shù)據(jù)處理主機上執(zhí)行時,該指令使得該數(shù)據(jù)處理主機執(zhí)行根據(jù)所述第一方面的方法。
因此,根據(jù)本發(fā)明,在運行單位內(nèi)定位數(shù)據(jù)實體并檢查其內(nèi)容,從而當將多個運行單位組合成單個可執(zhí)行文件時,如果發(fā)現(xiàn)與由于添加先前的運行單位而已存在于該可執(zhí)行文件內(nèi)的數(shù)據(jù)實體相匹配,則不添加數(shù)據(jù)實體。
可選地,匹配兩個數(shù)據(jù)實體需要每個數(shù)據(jù)實體包含相同的字符串值,例如,將被添加到該可執(zhí)行文件內(nèi)并設定為“abcdef”的數(shù)據(jù)實體將僅與該可執(zhí)行文件內(nèi)已存在的并設定為“abcdef”的數(shù)據(jù)實體相匹配。
作為另一種選擇,匹配兩個數(shù)據(jù)實體需要部分匹配,其中已存在于可執(zhí)行文件內(nèi)的數(shù)據(jù)實體包含將被添加的數(shù)據(jù)實體的字符串值。例如,將被添加到該可執(zhí)行文件內(nèi)并設定為“bcde”的數(shù)據(jù)實體將與該可執(zhí)行文件內(nèi)已存在的并設定為“abcdef”的數(shù)據(jù)實體相匹配。
如果匹配僅需要部分匹配,則可選地,如果將被添加到該可執(zhí)行文件內(nèi)的運行單位包含被設定為這樣的字符串值的新數(shù)據(jù)實體,即該字符串值也包含以前添加的數(shù)據(jù)實體的字符串值,則將該新數(shù)據(jù)實體添加到該可執(zhí)行文件內(nèi),并除去該以前添加的數(shù)據(jù)實體。例如,如果該新數(shù)據(jù)實體被設定為“abcdef”并且以前添加的數(shù)據(jù)實體被設定為“bcde”,則在該可執(zhí)行文件內(nèi)用該新數(shù)據(jù)實體代替該以前添加的數(shù)據(jù)實體。這是因為“bcde”設定是較大的“abcdef”數(shù)據(jù)實體的子字符串。應注意,此匹配是在整個數(shù)據(jù)實體上,而不僅是在其前綴或后綴上。
可選地,如果將被添加到該可執(zhí)行文件內(nèi)的運行單位包含多個數(shù)據(jù)實體,則可將兩個或多個所述數(shù)據(jù)實體組合成單個數(shù)據(jù)實體,以便與該執(zhí)行文件內(nèi)已經(jīng)存在的數(shù)據(jù)實體相匹配。
優(yōu)選地,使用一鍵值標記運行單位內(nèi)的數(shù)據(jù)實體,該鍵值可然后用于定位該數(shù)據(jù)實體。例如,可用鍵值“LEG”標記數(shù)據(jù)實體。
優(yōu)選地,該數(shù)據(jù)實體包含版權(quán)聲明?;蛘撸摂?shù)據(jù)實體可包括任何字符串,例如作者名稱或擁有該可執(zhí)行文件的公司的名稱。
下面將按照附圖中所示的本發(fā)明的優(yōu)選實施例來說明本發(fā)明,該說明僅作為示例,在該些附圖中圖1是本發(fā)明的優(yōu)選實施例可有利地應用于其內(nèi)的數(shù)據(jù)處理環(huán)境的示意圖;圖2是根據(jù)現(xiàn)有技術(shù)的從多個運行單位創(chuàng)建可執(zhí)行文件的示例的示意圖;圖3是根據(jù)本發(fā)明的優(yōu)選實施例的從多個運行單位創(chuàng)建可執(zhí)行文件的示例的示意圖;圖4是根據(jù)本發(fā)明的優(yōu)選實施例的從多個運行單位創(chuàng)建可執(zhí)行文件的方法的流程圖。
具體實施例方式
圖1是本發(fā)明的優(yōu)選實施例可有利地應用于其內(nèi)的數(shù)據(jù)處理環(huán)境的示意圖。它示出客戶機/服務器數(shù)據(jù)處理主機10,該主機經(jīng)由網(wǎng)絡11連接到其他客戶機/服務器數(shù)據(jù)處理主機12和13,該網(wǎng)絡可以是例如因特網(wǎng)。在任何這種機器上可安裝編譯器和連接編輯程序,以便將多個匯編程序源模塊編譯和連接成可執(zhí)行文件??蛻魴C/服務器10具有用于執(zhí)行控制客戶機/服務器10的操作的程序的處理器101、RAM易失存儲元件102、非易失存儲元件103、以及用于與網(wǎng)絡11接口以便與其他客戶機/服務器12和13通信的網(wǎng)絡連接器104。
本發(fā)明的優(yōu)選地實施例參照IBM z/OS環(huán)境繼續(xù)進行。但是,其他的環(huán)境提供了類似的功能和操作。此優(yōu)選實施例考慮了z/OS匯編程序,其中通過將匯編程序源模塊編譯成目標疊(object deck)來生成運行單位。根據(jù)現(xiàn)有技術(shù),將版權(quán)聲明放入?yún)R編程序目標疊的方法是通過將以下形式的語句插入?yún)R編程序源模塊DC CLn′<<character_string>>′在此語句內(nèi),“DC CLn”是聲明一“n”字節(jié)的字符常數(shù)(數(shù)據(jù)實體)的匯編指令,而“<<character_string>>”是該常數(shù)的值。例如,下面的語句聲明了包含字符串“Copyright IBM Corp.2003”的24個字節(jié)的常數(shù)
DC CL24′Copyright IBM Corp.2003′因此,這種語句存在于匯編程序模塊內(nèi),并且在編譯之后還將存在于該模塊的編譯形式(目標疊)內(nèi)。但是,應指出,使用此技術(shù)時,該字符常數(shù)是該模塊的可執(zhí)行部分的一部分,并且因此必須伴隨有其他代碼以便允許這樣,例如B *+64DC CL64′<<character_string>>′這聲明了一個64字節(jié)的字符常數(shù),但是在該語句之前有一轉(zhuǎn)移語句,該轉(zhuǎn)移語句向前轉(zhuǎn)移了64個字節(jié)以跳過該字符常數(shù)。結(jié)果,當執(zhí)行該模塊時,首先執(zhí)行該轉(zhuǎn)移語句,然后跳過該字符串。
編譯匯編程序模塊的行為不會產(chǎn)生直接可執(zhí)行的任何東西,而是產(chǎn)生目標疊(運行單位),該目標疊是連接編輯程序(還稱為聯(lián)編程序)的源。然后,使用該連接編輯程序?qū)⒍鄠€目標疊組合成單個可執(zhí)行文件。因而,例如,可將10個匯編程序模塊編譯和連接成一個可執(zhí)行文件。
為該連接編輯程序定義目標疊的格式。通常,一目標疊包括以一3字節(jié)的鍵開始的多個80字節(jié)的記錄ESD記錄指定該目標疊的名稱;TXT記錄形成該模塊的可執(zhí)行部分;RLD記錄包含連接信息;以及一END記錄標記該目標疊的結(jié)束。結(jié)果,當該連接編輯程序?qū)⒍鄠€目標疊組合成單個可執(zhí)行文件時,該可執(zhí)行文件由根據(jù)來自多個目標疊的多個RSD記錄處理的多個TXT記錄構(gòu)成。
圖2中示意性地示出了根據(jù)現(xiàn)有技術(shù)的編譯和連接過程的一示例。該附圖示出根據(jù)現(xiàn)有技術(shù)使用兩個匯編程序模塊(201、202)來創(chuàng)建單個可執(zhí)行文件(205)。這兩個匯編程序模塊(201、202)都包括以下語句B *+24DC CL24′Copyright IBM Corp.2003′這些語句之后是任何數(shù)量的語句(示出為“……”),這些語句包含構(gòu)成該匯編程序模塊的指令。作為這兩個匯編程序模塊的編譯(210)的結(jié)果,產(chǎn)生了兩個目標疊(203、204),每個目標疊包含
1.包含該模塊的名稱的一ESD記錄。
2.包含所述轉(zhuǎn)移指令(示出為“xBx”以表示構(gòu)成此指令的字節(jié)代碼)和24字節(jié)的字符串“Copyright IBM Corp.2003”的一TXT記錄。
3.包含構(gòu)成該模塊的其余部分的指令的字節(jié)代碼的一TXT記錄(對于模塊1(201)示出為“x1x1x1x”,對于模塊2(202)示出為“x2x2x2x”)。
4.標記該模塊的結(jié)束的一END記錄。
應指出,實際上目標疊通常更復雜,可能具有幾個ESD記錄、許多TXT記錄以及一個或多個RLD記錄。此外,該包含版權(quán)聲明的TXT記錄之前和/或之后可具有額外的字節(jié)代碼。
一旦已創(chuàng)建這兩個目標疊,就將它們連接編輯(211)成單個可執(zhí)行文件(205),該可執(zhí)行文件包含來自這兩個目標疊的每個記錄。如可以看到的,這導致該可執(zhí)行文件內(nèi)存在“Copyright IBM Corp.2003”字符串的兩份副本,而本來一份就足夠了。結(jié)果,該可執(zhí)行文件包括大約27個字節(jié)的不必要的信息(考慮到所述轉(zhuǎn)移指令),并且例如如果該可執(zhí)行文件由許多目標疊構(gòu)成,每個目標疊都包含相同的字符串,并且該字符串還較長,則該可執(zhí)行文件內(nèi)的不必要字節(jié)的數(shù)量會非常大。在一些運行時環(huán)境中,這僅會增大運行時模塊的大小而沒有特別的影響。但是,在其他環(huán)境內(nèi),這種大小的增大會影響性能,或者會減小運行時環(huán)境工作的能力,例如,如果發(fā)生“存儲器不足”情況的話。
圖3是根據(jù)本發(fā)明的優(yōu)選實施例從兩個匯編程序模塊(301、302)創(chuàng)建可執(zhí)行文件(305)的示例的示意圖。這兩個匯編程序模塊都包括以下語句DL CL24′Copyright IBM Corp.2003′“DL”是一新類型的匯編指令,其用于該優(yōu)選實施例中以指示在任何文件內(nèi)僅需包含一次的不可執(zhí)行的數(shù)據(jù)實體。然后,在此語句之后為任何數(shù)量的語句(示出為“……”),其包含構(gòu)成該匯編指令模塊的可執(zhí)行指令。應指出,因為使用DL標識不可執(zhí)行的數(shù)據(jù)實體,所以不需要轉(zhuǎn)移語句以在執(zhí)行期間跳過該數(shù)據(jù)實體。當編譯(310)這兩個匯編指令模塊(301、302)時,生成兩個目標疊(303、304),每個目標疊包含1.包含該模塊的名稱的一ESD記錄。
2.包含由DL指令指定的24字節(jié)的字符串“Copyright IBM Corp.2003”的一新的LEG記錄。
3.包含構(gòu)成該模塊的可執(zhí)行部分的指令的字節(jié)代碼的一TXT記錄(對于模塊3(301)示出為“x3x3x3x”,對于模塊4(302)示出為“x4x4x4x”)。
4.標記模塊的結(jié)束的一END記錄。
應指出,實際上目標疊通常更復雜,可能具有幾個ESD記錄、幾個LEG記錄、許多TXT記錄以及一個或多個RLD記錄(附圖中未示出)。
一旦已創(chuàng)建這兩個目標疊,就將它們連接編輯(311)成包含來自這兩個目標疊的記錄的單個可執(zhí)行文件(305)。但是,檢查每個目標疊中的LEG記錄的內(nèi)容,并且任何復本僅包含一次。結(jié)果,來自模塊3(301)的目標疊(303)的LEG記錄存在于該可執(zhí)行文件內(nèi),而包含匹配字符串的來自模塊4(302)的目標疊(304)的LEG記錄沒有存在于可執(zhí)行文件(305)內(nèi)。
這樣,該可執(zhí)行文件不再包含重復的版權(quán)聲明,從而節(jié)省了存儲器。此外,當考慮到該可執(zhí)行文件可包括許多各包含相同字符串的目標疊,而且該字符串會較長時,與現(xiàn)有技術(shù)相比節(jié)省的存儲量會非常大。這在存儲受約束的環(huán)境內(nèi)更是一個重要的考慮事項,其中這種存儲節(jié)省可使得在這種受約束的環(huán)境內(nèi)可使用更多的應用程序。
應指出,在優(yōu)選實施例內(nèi),使用新的DL指令來標識僅需要在可執(zhí)行文件內(nèi)出現(xiàn)一次的字符串?;蛘呖蛇x擇地,可使用現(xiàn)有的指令,并且例如該指令具有特定值。例如,可使用“DC LEGn”指令來標識僅需要在可執(zhí)行文件內(nèi)出現(xiàn)一次的n字符串常數(shù),例如DL LEG24″Copyright IBM Corp.2003″此外應指出,在圖3的示例內(nèi),可執(zhí)行文件305內(nèi)的LEG記錄留在它所源自的目標疊(303)內(nèi)的位置。在另一個實施例內(nèi),可將LEG記錄添加到該可執(zhí)行文件內(nèi)的不同位置,從而例如所包含的來自任何目標疊的所有LEG記錄被置于該可執(zhí)行文件的開頭。
還應指出,圖3的示例示出這樣的匯編指令模塊,該模塊具有單個DL指令,這導致目標疊內(nèi)存在單個LEG記錄??蛇x地,在該匯編指令模塊內(nèi)可存在多于一個的DL指令,并且對于這些DL指令中的每一個在目標疊內(nèi)創(chuàng)建一LEG記錄,或者通過將兩個或多個DL指令組合成單個LEG記錄來在目標疊內(nèi)創(chuàng)建一LEG記錄。因此,例如參照圖3,模塊4(302)可包含兩條DL指令,例如一條指令被設定為“Copyright IBM Corp.”,而第二條指令包含“2003”??蛇x地,編譯器可將這些指令組合成目標疊(304)內(nèi)的單個包含字符串“Copyright IBM Corp.2003”的LEG記錄,或者可選擇地,編譯器簡單地添加兩個LEG記錄,每條DL指令一個。
此外,如果目標疊包含多個LEG記錄,則連接編輯程序可在檢查復本之前組合這些LEG記錄中的兩個或更多個。因此,例如參照圖3,模塊4的目標疊(304)可包含例如兩個LEG記錄,一個記錄包含“CopyrightIBM Corp.”,第二個記錄包含“2003”??蛇x地,連接編輯程序可在尋找復本之前,將這些記錄組合成單個包含“Copyright IBM Corp.2003”的LEG記錄?;蛘呖蛇x擇地,連接編輯程序在尋找復本之前不組合LEG記錄。
不管連接編輯程序使用哪種方法達到必須在可執(zhí)行文件內(nèi)為其檢查復本的LEG記錄,都存在若干關于它如何推斷出復本存在的選項??蛇x地,它與每個以前添加的LEG記錄進行精確匹配比較,從而只有當發(fā)現(xiàn)精確匹配時才發(fā)現(xiàn)復本。在此情況下,例如“IBM Corp.”將與“Copyright IBMCorp.2003”不匹配,因為它不是精確匹配?;蛘呖蛇x擇地,連接編輯程序與每個先前添加的LEG記錄進行部分匹配比較,從而如果先前添加的記錄的一部分與新記錄相匹配,則發(fā)現(xiàn)復本。在此情況下,例如“IBMCorp.”將與“Copyright IBM Corp.2003”匹配,這是因為后一字符串包含前一字符串。或者可選擇地,需要通配符來獲得部分匹配,例如使用“*”來指示任何字符串。在此情況下,例如“IBM Corp.”將不與包含“CopyrightIBM Corp.2003”的LEG記錄相匹配,而“*IBM Corp.*”將與其相匹配。還應指出,如果使用部分檢查,則如果隨后添加的記錄包含來自先前添加的LEG記錄的字符串,則可從該可執(zhí)行文件除去該先前添加的記錄。
還應指出,盡管該優(yōu)選實施例說明了向可執(zhí)行文件添加目標疊或從其除去目標疊,但是在一些實施例中,可在易失存儲器內(nèi)構(gòu)建(build)該可執(zhí)行文件,從而只有當完全構(gòu)建該可執(zhí)行文件后才將其輸出。在這種情況下,向可執(zhí)行文件添加或從其除去的概念是指向用于最后輸出該可執(zhí)行文件的易失存儲器添加或從該其除去。
此外還應指出,盡管按照z/OS匯編程序模塊、編譯和連接編輯討論了該優(yōu)選實施例,但是本發(fā)明也可同樣地應用于其中將兩個或多個文件組合成單個可執(zhí)行文件的其他語言或環(huán)境。例如,對于高級語言例如C或C++而言將是如此,其中首先將源模塊編譯成目標文件,然后將其連接編輯成可執(zhí)行文件,例如Microsoft Windows環(huán)境內(nèi)的動態(tài)連接庫。類似的,在一些環(huán)境內(nèi),該編譯和連接編輯步驟實際上組合在一起,例如在Java內(nèi),將與該優(yōu)選實施例內(nèi)的匯編程序模塊等價的類文件直接組合成與該優(yōu)選實施例的可執(zhí)行文件等價的jar文件(部署過程)。在這些環(huán)境內(nèi),標記僅需要在可執(zhí)行文件內(nèi)出現(xiàn)一次的字符串的方法可能不同,并且給定了本發(fā)明,該方法對于本技術(shù)領域內(nèi)的技術(shù)人員將很明顯。
圖4是根據(jù)本發(fā)明的優(yōu)選實施例的連接編輯程序遵循的方法的流程圖。在步驟401,連接編輯程序讀取將包含在可執(zhí)行文件內(nèi)的運行單位。例如,參照圖3,這可以是匯編程序模塊3(301)的目標疊(303)。在步驟402,該方法檢查運行單位中被指示為在可執(zhí)行文件內(nèi)僅需要一次的數(shù)據(jù)實體。例如,參照圖3,這種數(shù)據(jù)實體將是LEG記錄的一部分。如果不存在這種數(shù)據(jù)實體,則在步驟404將該運行單位添加到該可執(zhí)行文件內(nèi)。但是,如果這種數(shù)據(jù)實體確實存在于該運行單位內(nèi),則在步驟403根據(jù)先前包含的不同運行單位來進行檢查以判斷在該可執(zhí)行文件內(nèi)是否已經(jīng)存在匹配的數(shù)據(jù)實體。如前文討論的,該檢查可涉及精確匹配或部分匹配,并且也可涉及一個或多個數(shù)據(jù)實體的組合。如果在可執(zhí)行文件內(nèi)不存在重復的條目,則在步驟404將具有數(shù)據(jù)實體的運行單位添加到該可執(zhí)行文件內(nèi)。如果在步驟403發(fā)現(xiàn)匹配的數(shù)據(jù)實體,則在步驟405將該運行單位添加到該可執(zhí)行文件內(nèi),但是不添加被發(fā)現(xiàn)匹配的數(shù)據(jù)實體。可選地,當在步驟404或405將運行單位以及相關聯(lián)的數(shù)據(jù)實體添加到可執(zhí)行文件內(nèi)時,將數(shù)據(jù)實體添加到該可執(zhí)行文件內(nèi)的與該運行單位的其余部分分開的部分,例如在可執(zhí)行文件的開頭。
應指出,在另一實施例中,盡管數(shù)據(jù)實體已存在于數(shù)據(jù)文件中,也可添加重復的數(shù)據(jù)實體,從而使用該實施例的方法來把該數(shù)據(jù)實體在可執(zhí)行文件中出現(xiàn)的次數(shù)減少到一較小的數(shù),而不是減少到僅為1。例如,如果該可執(zhí)行文件很大,則可能需要它將重復的版權(quán)聲明散布在整個文件中,而同時并未包括被添加到該可執(zhí)行文件的運行單位內(nèi)包含的每個版權(quán)聲明。
還應指出,本領域的技術(shù)人員將認識到圖4中所述的方法可以多種編程語言例如Java、C、或C++來實現(xiàn),并且不僅可在連接編輯程序中實現(xiàn)。本領域的技術(shù)人員還將認識到該方法一旦被實現(xiàn)就可存儲在包含一個或多個程序的計算機程序產(chǎn)品中,所述程序以源形式或可執(zhí)行形式存在于一介質(zhì)例如軟盤、CD、和DVC上,其適合于裝載到數(shù)據(jù)處理主機中,并致使該數(shù)據(jù)處理主機執(zhí)行該方法。本領域的技術(shù)人員還將認識到圖4的方法可體現(xiàn)在硬件裝置中。
因此,本發(fā)明提供了一種用于將多個運行單位組合成單個可執(zhí)行文件的方法、裝置和計算機程序產(chǎn)品。根據(jù)本發(fā)明,每個運行單位可包含一個或多個數(shù)據(jù)實體,該數(shù)據(jù)實體被指定為在可執(zhí)行文件內(nèi)僅需要一次。結(jié)果,當構(gòu)建該執(zhí)行文件時,如果要將具有給定值的數(shù)據(jù)實體的運行單位添加到可執(zhí)行文件內(nèi),則如果具有匹配值的數(shù)據(jù)實體的先前的運行單位以前已添加到該可執(zhí)行文件內(nèi),則將該運行單位添加到該可執(zhí)行文件內(nèi)而不添加該數(shù)據(jù)實體。
權(quán)利要求
1.一種通過組合多個運行單位創(chuàng)建可執(zhí)行文件的數(shù)據(jù)處理方法,該方法包括以下步驟讀取將被添加到該可執(zhí)行文件內(nèi)的第一運行單位;在第一運行單位內(nèi)定位被設定為第一字符串值的第一數(shù)據(jù)實體;匹配該第一數(shù)據(jù)實體和被設定為第二字符串值的第二數(shù)據(jù)實體,該第二數(shù)據(jù)實體來自以前添加到該可執(zhí)行文件內(nèi)的第二運行單位;以及將該第一運行單位添加到該可執(zhí)行文件內(nèi),而不添加該第一數(shù)據(jù)實體。
2.根據(jù)權(quán)利要求1的方法,其中,如果所述第一字符串值與所述第二字符串值相同,則所述匹配步驟匹配所述第一數(shù)據(jù)實體與所述第二數(shù)據(jù)實體。
3.根據(jù)權(quán)利要求1的方法,其中,如果所述第二字符串值包含所述第一字符串值,則所述匹配步驟匹配所述第一數(shù)據(jù)實體與所述第二數(shù)據(jù)實體。
4.根據(jù)權(quán)利要求3的方法,還包括以下步驟讀取將被添加到所述可執(zhí)行文件內(nèi)的第三運行單位,其中所述第三運行單位包括具有第三字符串值的第三數(shù)據(jù)實體;匹配所述第一數(shù)據(jù)實體與所述第三數(shù)據(jù)實體,其中如果所述第三字符串值包含所述第一字符串值,則發(fā)現(xiàn)匹配;從所述可執(zhí)行文件除去所述第一數(shù)據(jù)實體;以及將所述第三數(shù)據(jù)實體添加到該可執(zhí)行文件內(nèi)。
5.根據(jù)前面任何一個權(quán)利要求的方法,其中,所述定位第一數(shù)據(jù)實體的步驟包括以下步驟定位第一運行單位內(nèi)的兩個或更多個數(shù)據(jù)實體;以及從這兩個或更多個數(shù)據(jù)實體創(chuàng)建所述第一數(shù)據(jù)實體。
6.根據(jù)前面任何一個權(quán)利要求的方法,其中,所述定位數(shù)據(jù)實體的步驟使用借以標記該數(shù)據(jù)實體的鍵值來定位數(shù)據(jù)實體。
7.一種通過組合多個運行單位創(chuàng)建可執(zhí)行文件的數(shù)據(jù)處理裝置,該裝置包括用于讀取將被添加到該可執(zhí)行文件內(nèi)的第一運行單位的裝置;用于在該第一運行單位內(nèi)定位被設定為第一字符串值的第一數(shù)據(jù)實體的裝置;用于匹配該第一數(shù)據(jù)實體和被設定為第二字符串值的第二數(shù)據(jù)實體的裝置,該第二數(shù)據(jù)實體來自以前添加到該可執(zhí)行文件內(nèi)的第二運行單位;以及用于將該第一運行單位添加到該可執(zhí)行文件內(nèi),而不添加該第一數(shù)據(jù)實體的裝置。
8.根據(jù)權(quán)利要求7的裝置,其中,如果所述第一字符串值與所述第二字符串值相同,則所述用于匹配的裝置匹配所述第一數(shù)據(jù)實體與所述第二數(shù)據(jù)實體。
9.根據(jù)權(quán)利要求7的裝置,其中,如果所述第二字符串值包含所述第一字符串值,則所述用于匹配的裝置匹配所述第一數(shù)據(jù)實體與所述第二數(shù)據(jù)實體。
10.根據(jù)權(quán)利要求9的裝置,還包括用于讀取將被添加到所述可執(zhí)行文件內(nèi)的第三運行單位的裝置,其中所述第三運行單位包括具有第三字符串值的第三數(shù)據(jù)實體;用于匹配所述第一數(shù)據(jù)實體和所述第三數(shù)據(jù)實體的裝置,其中如果所述第三字符串值包含所述第一字符串值,則發(fā)現(xiàn)匹配;用于從所述可執(zhí)行文件除去所述第一數(shù)據(jù)實體的裝置;以及用于將所述第三數(shù)據(jù)實體添加到所述可執(zhí)行文件內(nèi)的裝置。
11.根據(jù)權(quán)利要求7-10中的任何一個的裝置,其中,所述用于定位第一數(shù)據(jù)實體的裝置還包括用于定位所述第一運行單位內(nèi)的兩個或更多個數(shù)據(jù)實體的裝置;以及用于從這兩個或更多個數(shù)據(jù)實體創(chuàng)建所述第一數(shù)據(jù)實體的裝置。
12.根據(jù)權(quán)利要求7-11中的任何一個的裝置,其中,所述用于定位數(shù)據(jù)實體的裝置使用借以標記所述數(shù)據(jù)實體的鍵值來定位數(shù)據(jù)實體。
13.一種包含這樣的指令的計算機程序產(chǎn)品,所述指令當在數(shù)據(jù)處理主機上被執(zhí)行時,致使所述數(shù)據(jù)處理主機執(zhí)行根據(jù)權(quán)利要求1-6中的任何一個的方法。
全文摘要
本發(fā)明提供了一種用于將多個運行單位組合成單個可執(zhí)行文件的方法、裝置和計算機程序產(chǎn)品。根據(jù)本發(fā)明,每個運行單位可包含一個或多個數(shù)據(jù)實體,所述數(shù)據(jù)實體被指定為在可執(zhí)行文件內(nèi)僅需要一次。結(jié)果,當構(gòu)建該執(zhí)行文件時,如果要將具有給定值的數(shù)據(jù)實體的運行單位添加到可執(zhí)行文件內(nèi),則如果具有匹配值的數(shù)據(jù)實體的先前的運行單位以前已添加到該可執(zhí)行文件內(nèi),則將該運行單位添加到該可執(zhí)行文件內(nèi)而不添加數(shù)據(jù)實體。
文檔編號G06F9/45GK1777868SQ200480010596
公開日2006年5月24日 申請日期2004年3月4日 優(yōu)先權(quán)日2003年4月24日
發(fā)明者I·G·格里菲施, R·哈里斯 申請人:國際商業(yè)機器公司