專利名稱::可執(zhí)行程序的跨平臺實現(xiàn)方法及移動終端的制作方法
技術領域:
:本發(fā)明涉及移動終端的操作系統(tǒng)的
技術領域:
,尤其涉及一種可執(zhí)行程序的跨平臺實現(xiàn)方法及移動終端。
背景技術:
:OS(OperatingSystem,操作系統(tǒng))是控制其他程序運行,管理系統(tǒng)資源并為用戶提供操作界面的系統(tǒng)軟件的集合,OS為具有并發(fā)性、共享性、虛擬性和不確定性的平臺。目前,市面上存在多種移動終端平臺,以智能手機平臺為例,主要包括=PalmOS、Symbian、Windowsmobile、Linux、Android、iPhoneOS和黑莓七種平臺。各種平臺的手機都有自成體系的一整套軟件開發(fā)環(huán)境,且各自之間的軟件開發(fā)環(huán)境差異極大,導致各種平臺的可執(zhí)行程序都是專用的,兩兩之間互不兼容。軟件開發(fā)商開發(fā)出ー款軟件后,需要針對該款軟件,為各種平臺配備專門的研發(fā)團隊,使該款軟件能適配各種平臺,導致軟件開發(fā)代價過高,運營和維護成本高昂。由于java程序是目前唯一一種可實現(xiàn)跨平臺開發(fā)的程序,許多軟件開發(fā)商則采用java程序開發(fā)軟件,在各平臺上安裝java虛擬機,實現(xiàn)軟件的適配。但由于java程序是一種解釋執(zhí)行的程序,其與各種平臺的原生可執(zhí)行程序相比,執(zhí)行效率較低;一般地,java虛擬機的硬件配置較低,采用java虛擬機來進行程序的加載運行,性能較低、電源耗費大,且易受硬件配置的限制和影響。因此,一種執(zhí)行效率高、性能高、電源耗費小的跨平臺可執(zhí)行程序的實現(xiàn)成為ー個重要的研究方向。
發(fā)明內容本發(fā)明實施例所要解決的技術問題在于,提供一種可執(zhí)行程序的跨平臺實現(xiàn)方法及移動終端,可實現(xiàn)移動終端的跨平臺的可執(zhí)行程序的加載運行,執(zhí)行效率高、性能高、成本低。為了解決上述技術問題,本發(fā)明實施例提供了一種可執(zhí)行程序的跨平臺實現(xiàn)方法,包括讀取標準格式文件;從所述標準格式文件中選擇與當前平臺環(huán)境相匹配的可執(zhí)行程序,將所述可執(zhí)行程序加載至當前平臺的內存中;運行所述加載的可執(zhí)行程序。其中,所述標準格式文件為QELF(QQExecutableandLinkableFormat,QQ可執(zhí)行連接格式)文件,所述QELF文件中包含至少ー個QELF程序;所述QELF程序為X86指令的可執(zhí)行程序、ARM(AdvancedRISCMachines,一種微處理器)指令的可執(zhí)行程序、Java指令的可執(zhí)行程序和Misc指令的可執(zhí)行程序中的任ー種或多種。其中,所述QELF文件中的任一QELF程序均包含用于調用所述當前平臺的標準服務接口的函數(shù);所述QELF程序為調用所述標準服務接口開發(fā)得到的軟件源代碼經編譯獲得的可執(zhí)行程序。其中,所述標準服務接口為所述當前平臺的原生服務接口按預設的標準接口規(guī)范封裝后獲得的服務接口。其中,所述當前平臺包括Palm操作系統(tǒng)、Symbian操作系統(tǒng)、Windowsmobile操作系統(tǒng)、Android操作系統(tǒng)、iPhone操作系統(tǒng)、黑莓操作系統(tǒng)、Windows操作系統(tǒng)、Unix操作系統(tǒng)及Linux操作系統(tǒng)中的任一種或多種。相應地,一種移動終端,包括讀取模塊,用于讀取標準格式文件;加載模塊,用于從所述讀取模塊讀取的標準格式文件中選擇與當前平臺環(huán)境相匹配的可執(zhí)行程序,將所述可執(zhí)行程序加載至當前平臺的內存中;執(zhí)行模塊,用于運行所述加載模塊加載的可執(zhí)行程序。其中,所述移動終端還包括標準化模塊,用于按預設的標準接口規(guī)范,對所述當前平臺的原生服務接口進行標準化封裝,獲得標準服務接口。其中所述標準格式文件為QELF文件,所述QELF文件中包含至少一個QELF程序;所述QELF程序為X86指令的可執(zhí)行程序、ARM指令的可執(zhí)行程序、Java指令的可執(zhí)行程序和Misc指令的可執(zhí)行程序中的任一種或多種。其中,所述加載模塊為QELF加載器。其中,所述標準化模塊為平臺抽象層。其中,所述QELF文件中的任一QELF程序均包含用于調用所述平臺抽象層的標準服務接口的函數(shù);所述QELF程序為調用所述標準服務接口開發(fā)得到的軟件源代碼經編譯獲得的可執(zhí)行程序。其中,所述當前平臺為所述移動終端的當前操作系統(tǒng);所述移動終端的當前操作系統(tǒng)為Palm操作系統(tǒng)、Symbian操作系統(tǒng)、Windowsmobile操作系統(tǒng)、Android操作系統(tǒng)、iPhone操作系統(tǒng)、黑莓操作系統(tǒng)、Windows操作系統(tǒng)、Unix操作系統(tǒng)及Linux操作系統(tǒng)中的任一種。實施本發(fā)明實施例,具有如下有益效果I、本發(fā)明實施例從標準格式文件(QELF文件)中選擇與當前平臺環(huán)境相匹配的可執(zhí)行程序進行加載運行,該QELF文件包含一種或多種指令的可執(zhí)行程序,可直接應用于各種移動終端平臺,各移動終端平臺可直接從該可執(zhí)行程序文件中選擇與當前平臺相適配的可執(zhí)行程序進行加載運行,實現(xiàn)了可執(zhí)行程序的跨平臺應用,降低了軟件開發(fā)商的開發(fā)、運營成本,提聞了程序執(zhí)行效率和性能。2、本發(fā)明實施例采用統(tǒng)一的標準接口規(guī)范對各種平臺的原生服務接口進行標準化封裝,使各種平臺均能夠以標準服務接口的形式向外提供服務,在此基礎上進行軟件開發(fā)時,則不需要再考慮平臺差異,實現(xiàn)了開發(fā)得到的同一份軟件源代碼可以在所有平臺上公用,實現(xiàn)了可執(zhí)行程序的跨平臺應用,降低了軟件開發(fā)商的開發(fā)、運營成本,提高了程序執(zhí)行效率和性能。為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。圖I為本發(fā)明的移動終端的第一實施例的結構示意圖2為本發(fā)明的移動終端的第二實施例的結構示意圖3為本發(fā)明的QELF程序的實施例的結構示意圖;圖4為本發(fā)明的QELF文件的實施例的結構示意圖5為本發(fā)明的可執(zhí)行程序的跨平臺實現(xiàn)方法的實施例的流程圖6為本發(fā)明的可執(zhí)行程序的應用的實施例的結構示意圖。具體實施例方式下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。本發(fā)明實施例的移動終端包括但不限于手機、智能手機、PDA(PersonalDigitalAssistant,個人數(shù)碼助理)、PC(PersonalComputer,個人計算機)機等終端。請參見圖1,為本發(fā)明的移動終端的第一實施例的結構示意圖;所述移動終端包括讀取模塊10,用于讀取標準格式文件。具體實現(xiàn)中,該標準格式文件優(yōu)選為QELF格式的文件,該QELF文件中包含至少一個QELF程序,其中,任一QELF程序均包含可以用來調用標準服務接口的函數(shù),即QELF程序是使用任一移動終端平臺的標準服務接口開發(fā)得到的軟件源代碼經編譯獲得的可執(zhí)行程序。具體地,所述QELF程序為X86指令的可執(zhí)行程序、ARM指令的可執(zhí)行程序、Java指令的可執(zhí)行程序和Misc指令的可執(zhí)行程序的任一種或多種??梢岳斫獾氖牵琎ELF文件中的QELF程序并不限于上述四種指令,其還可以根據實際應用需要,為其他指令的QELF程序。QELF文件存儲于所述移動終端的存儲器中,當需要運行QELF文件中的可執(zhí)行程序時,所述讀取模塊10從所述移動終端的存儲器中讀取所述QELF文件。所述讀取模塊10對可執(zhí)行程序文件的讀取過程與現(xiàn)有技術相同,在此不贅述。加載模塊20,用于從所述讀取模塊10讀取的標準格式文件中選擇與當前平臺環(huán)境相匹配的可執(zhí)行程序,將所述可執(zhí)行程序加載至當前平臺的內存中。具體實現(xiàn)中,所述加載模塊20優(yōu)選為使用平臺的原生接口開發(fā)得到的QELF加載器,該QELF加載器預先內置于移動終端平臺中;比如使用iPhone操作系統(tǒng)的原生服務接口開發(fā)得到QELF加載器,該QELF加載器可以且僅可以被內置于使用iPhone操作系統(tǒng)的移動終端(如iPhone手機)中運行;再如使用Android操作系統(tǒng)的原生服務接口開發(fā)得到QELF加載器,該QELF加載器可以且僅可以被內置于使用Android操作系統(tǒng)的移動終端(如Android手機)中運行;再如使用Windows操作系統(tǒng)開發(fā)得到的QELF加載器,該QELF加載器可以且僅可以被內置于使用Windows操作系統(tǒng)的移動終端(如PC機)中運行。所述移動終端平臺可以為Palm操作系統(tǒng)、Symbian操作系統(tǒng)、Windowsmobile操作系統(tǒng)、Android操作系統(tǒng)、iPhone操作系統(tǒng)、黑莓操作系統(tǒng)、Windows操作系統(tǒng)、Unix操作系統(tǒng)及Linux操作系統(tǒng)中的任一種。使用各種平臺的移動終端的上層操作系統(tǒng)完全不相同,但從硬件角度看,使用基于相同指令的CPU的移動終端卻能夠運行相同指令的QELF程序,比如以Nokia手機(使用Symbian操作系統(tǒng))、Windowsmobile手機、Android手機和iPhone手機為例,雖然上述各個手機的上層操作系統(tǒng)(平臺)完全不相同,但它們均采用基于ARM指令的CPU,因此從硬件角度看,上述各個手機平臺的原生可執(zhí)行程序均為ARM指令的可執(zhí)行程序,因此,當QELF文件中包含ARM指令的QELF程序時,該QELF文件可以在上述各個手機中使用;再如針對各種PC機(使用Windows操作系統(tǒng)、Unix操作系統(tǒng)或Linux操作系統(tǒng)),雖然上述各種PC機的上層操作系統(tǒng)(平臺)完全不相同,但它們均采用基于X86指令的CPU,因此從硬件角度看,上述各種PC機平臺的原生可執(zhí)行程序均為X86指令的可執(zhí)行程序,因此,當QELF文件中包含X86指令的QELF程序時,該QELF文件可以在上述各種PC機中使用;可以理解的是,上述僅為舉例,其他情況下可類似分析,在此不贅述。另外,當QELF文件中同時包含ARM指令的QELF程序和X86指令的QELF程序時,該QELF文件既可以在上述各種手機上使用,也可以在上述各種PC機上使用,當QELF文件被其應用的移動終端讀取后,所述加載模塊20則從QELF文件中選擇與該移動終端的平臺相匹配QELF程序進行加載。具體地,當所述讀取模塊10讀取出QELF文件后,由于所述QELF文件包括的QELF程序為X86指令的可執(zhí)行程序、ARM指令的可執(zhí)行程序、Java指令的可執(zhí)行程序和Misc指令的可執(zhí)行程序中的任一種或多種,所述加載模塊20根據其所在的移動終端的當前平臺環(huán)境,選擇與當前平臺環(huán)境相匹配的QELF程序,將所述選擇的QELF程序加載至所述移動終端的內存中。所述加載模塊20對選擇的QELF程序進行加載的過程與現(xiàn)有技術類似,在此不贅述。執(zhí)行模塊30,用于運行所述加載模塊20加載的可執(zhí)行程序。具體實現(xiàn)中,所述執(zhí)行模塊30為所述移動終端的CPU,當所述加載模塊20將選擇的QELF程序加載至所述移動終端的內存后,所述移動終端的CPU從該QELF程序的程序起始點運行該QELF程序??梢岳斫獾氖?,由于加載的QELF程序包含的指令與所述移動終端的CPU基于的指令相同,因此,所述CPU運行該QELF程序與運行所述移動終端當前平臺的原生可執(zhí)行程序的過程相同,在此不贅述。本發(fā)明實施例可實現(xiàn)跨平臺的可執(zhí)行程序的加載運行,降低了軟件開發(fā)商的開發(fā)、運營成本,提高了程序執(zhí)行效率和性能高。請參見圖2,為本發(fā)明的移動終端的第二實施例的結構示意圖;與上一實施例相同,所述移動終端包括讀取模塊10、加載模塊20和執(zhí)行模塊30。本實施例中,所述移動終端還包括標準化模塊40,用于按預設的標準接口規(guī)范,對所述當前平臺的原生服務接口進行標準化封裝,獲得標準服務接口。具體實現(xiàn)中,若要實現(xiàn)可執(zhí)行程序的跨平臺使用,則需要利用各種平臺的服務,由于不同平臺提供相同服務的原生服務接口(原生API)完全不同,因此需要抽象各種平臺的原生服務接口,把各種平臺的所有原生服務接口全部標準化。具體地,可預先定義一套標準接口規(guī)范,對各種平臺的原生服務接口均按照該規(guī)范一一標準化封裝,使各種平臺均能夠以標準服務接口的形式向外提供服務,在此基礎上進行軟件開發(fā)時,則不需要再考慮平臺差異,可實現(xiàn)開發(fā)得到的同一份軟件源代碼可以在所有平臺上公用,實現(xiàn)可執(zhí)行程序的跨平臺應用。以手機為例,由于目前主流手機平臺Windowsmobil、Symbian、Androic、iPhone等都支持ANSIC語言,因此可以ANSIC語言來定義標準接口規(guī)范,定義的規(guī)范中的服務接口實例如下文件系統(tǒng)接口QFILE*QFile_0pen(QWCHAR*pName,constQWCHAR*pMode);//文件打開QVOIDQFile_Close(QFILE*pFile);//文件關閉QINTQFile_Read(QFILE*pFile,QVOID*pData,QINTnSize);//讀文件QINTQFileJVrite(QFILE*pFile,QVOID*pData,QINTnSize);//寫文件QBOOLQFile_Seek(QFILE*pFile,QINToffset,QINTorigin);//文件讀寫位置移動QB00LQFile_GetSize(QFILE*pFile,QINT*pnSize);//獲得文件體積QB00LQFile_Move(QWCHAR*pFileName,QWCHAR*pNewFileName);//文件移動繪圖接口QGDI_SetFont//設置字體樣式QGDI_DrawText//在屏幕上輸出文本QGDI_GetTextHeight//獲得文本高度QGDI_FillRect//繪制并填充一個矩形其它接口舉例QSendSMS//發(fā)送短信QGetTime//獲取時間可以理解的是,上述標準服務接口僅為舉例,根據各種平臺提供的服務接口的功能,還包括其他標準服務接口,其他情況可類似分析,在此不贅述。所述標準化模塊40為使用各種平臺的原生服務接口開發(fā)得到的平臺抽象層,該平臺抽象層是各種平臺的原生API封裝實現(xiàn),由于各種平臺的原生API各不相同,因此各種平臺的平臺抽象層的實現(xiàn)方法也有差異,比如Windowsmobile平臺的平臺抽象層中的各種標準服務接口采用win32API或TAPI封裝實現(xiàn);再如Symbian平臺的平臺抽象層中的各種標準服務接口采用S60API封裝實現(xiàn);再如iPhone平臺的平臺抽象層的各種標準服務接口采用iPhonesdk或0bjective_C封裝實現(xiàn)?;诟鞣N平臺實現(xiàn)的平臺抽象層,只能內置于使用對應平臺的移動終端中,比如由Windowsmobile平臺封裝實現(xiàn)的平臺抽象層,僅能內置于使用Windowsmobile操作系統(tǒng)的移動終端(Windowsmobile手機)中;由iPhone平臺封裝實現(xiàn)的平臺抽象層,僅能內置于使用iPhone操作系統(tǒng)的移動終端(iPhone手機)中。平臺抽象層屏蔽了移動終端平臺的相關細節(jié),基于平臺抽象層開發(fā)的應用軟件可自動適配到所有具有平臺抽象層的移動終端中運行。如前述,QELF程序是使用任一移動終端平臺的標準服務接口開發(fā)得到的軟件源代碼經編譯獲得的可執(zhí)行程序。具體地,用戶可在任一具有平臺抽象層的移動終端平臺上,通過調用該平臺抽象層的標準服務接口開發(fā)得到軟件源代碼,因此,QELF程序包含可以用來調用標準服務接口的函數(shù)(或代碼)。當開發(fā)出軟件源代碼后,需要使用編譯器對該軟件源代碼進行編譯,以獲得QELF程序,進而獲得QELF文件。具體實現(xiàn)中,QELF程序的編譯方法有兩種,其一為可根據需要使用的平臺開發(fā)開源的gcc編譯器,改寫該開源的gcc編譯器,則可直接從源代碼生成QELF程序。比如開發(fā)得到開源的ARMgcc編譯器,則通過改寫該開源的ARMgcc編譯器的源代碼,編譯生成ARM指令的QELF程序;再如開發(fā)得到開源的復合指令的gcc編譯器,則通過改寫該開源的復合指令的gcc編譯器的源代碼,編譯生成復合指令(包括=ARM指令、X86指令、Java指令和Misc指令等)的QELF程序。其二為可利用現(xiàn)有的編譯器進行編譯,其中,現(xiàn)有的常見編譯環(huán)境有針對Windowsmobile手機,其使用vs2003、vs2005和vs2008編譯器,源代碼編譯生成ARM指令的PE格式的可執(zhí)行程序;針對Nokia手機,其使用carbideC++和s60sdk兩個常用編譯器,源代碼編譯生成ARM指令的ELF格式的可執(zhí)行程序;針對Android手機,其使用ARM-Linux-gcc編譯器,源代碼編譯生成ELF可執(zhí)行程序。因此,米用第二種方式得到QELF程序時,如可利用已有的vs2005編譯器生成PE可執(zhí)行程序,然后從PE可執(zhí)行程序中提取需要的數(shù)據(如從PE可執(zhí)行程序中提取代碼段、數(shù)據段、BSS的內容),重新按照QELF格式進行打包,得到QELF程序。QELF程序與現(xiàn)有的PE可執(zhí)行程序以及ELE可執(zhí)行程序的結構有一些差別。請一并參見圖3,為本發(fā)明的QELF程序的實施例的結構示意圖?,F(xiàn)有的各種可執(zhí)行程序的格式不完全相同,但必然會有“代碼段”、“數(shù)據段”和“BSS段”,其中,代碼段存儲指令代碼,針對Windows操作系統(tǒng)的移動終端(Windowsmobile手機或PC機)中,該PE可執(zhí)行程序名為.code,根據CPU體系結構該代碼段可能存X86指令或ARM指令;數(shù)據段存常量數(shù)據,PE可執(zhí)行程序名為,data;BSS段存已初始化的全局變量;當然,可執(zhí)行程序中還可能包括其他段,如初始化為O的數(shù)據段,重定位段,調試信息段,等等。如圖3所示,QELF程序也包含上述三個必要的段結構和其他段結構,另外,QELF程序中還引入了虛函數(shù)表段,該虛函數(shù)表段可以將軟件需要用到的平臺抽象層的標準服務接口集中起來,以C語言描述的話,該虛函數(shù)段定義了全局函數(shù)指針,軟件源代碼里直接調用這些全局函數(shù)指針,當該QELF程序被所述QELF加載器加載時,由該QELF加載器填入實際的各種標準服務接口的函數(shù)地址,軟件源代碼則可通過全局函數(shù)指針調用到應用的所述移動終端平臺的服務函數(shù),且這些函數(shù)被集中在該虛函數(shù)表段內,方便QELF加載器加載。軟件源代碼經編譯器編譯得到的QELF程序經過打包封裝,則得到了QELF文件,QELF文件中可包含一種指令的QELF程序,QELF文件中也可包含多種指令(復合指令)的QELF程序。請一并參見圖4,為本發(fā)明的QELF文件的實施例的結構示意圖;如圖4所示,QELF文件中包括X86指令的QELF程序、ARM指令的QELF程序、Java指令的QELF程序、Misc指令的QELF程序和其他指令的QELF程序,并且通過文件數(shù)據頭標記了這些信息(包括指令信息、位置信息等)。圖4所示的復合指令的QELF文件的實現(xiàn)如下假定使用開源的QELF-gcc編譯器,則該QELF-gcc編譯器需要分別包含X86-Linux_gcc、ARM-Linux-gcc、Misc-Linux-gcc等編譯器功能,QELF-gcc根據編譯選項,自動調用其內的各編譯器進行編譯,并把編譯結果打包生成圖4所示的QELF文件。該QELF文件在使用時,由QELF加載器從中選擇與當前移動終端平臺相匹配的QELF程序進行加載,然后交由CPU運行。本發(fā)明實施例可實現(xiàn)跨平臺的可執(zhí)行程序的加載運行,降低了軟件開發(fā)商的開發(fā)、運營成本,提高了程序執(zhí)行效率和性能高。為了更清楚的說明本發(fā)明,下面將對本發(fā)明的可執(zhí)行程序的跨平臺實現(xiàn)方法進行詳細介紹。請參見圖5,為本發(fā)明的可執(zhí)行程序的跨平臺實現(xiàn)方法的實施例的流程圖;所述方法包括SlOl,讀取標準格式文件。具體實現(xiàn)中,該標準格式文件可以為QELF格式的文件,該QELF文件中包含至少一個QELF程序,其中,任一QELF程序均包含可以用來調用標準服務接口的函數(shù),即QELF程序是使用任一移動終端平臺的標準服務接口開發(fā)得到的軟件源代碼經編譯獲得的可執(zhí)行程序。具體地,所述QELF程序為X86指令的可執(zhí)行程序、ARM指令的可執(zhí)行程序、Java指令的可執(zhí)行程序和Misc指令的可執(zhí)行程序中的任一種或多種??梢岳斫獾氖?,QELF文件中的QELF程序并不限于上述四種指令,其還可以根據實際應用需要,為其他指令的QELF程序。QELF文件存儲于所述移動終端的存儲器中,當需要運行QELF文件中的可執(zhí)行程序時,所述SlOl從所述移動終端的存儲器中讀取所述QELF文件。所述SlOl對可執(zhí)行程序文件的讀取過程與現(xiàn)有技術相同,在此不贅述。S102,從所述標準格式文件中選擇與當前平臺環(huán)境相匹配的可執(zhí)行程序,將所述可執(zhí)行程序加載至當前平臺的內存中。具體實現(xiàn)中,所述S102優(yōu)選采用使用平臺的原生接口開發(fā)得到的QELF加載器,該QELF加載器預先內置于移動終端平臺中;比如使用iPhone操作系統(tǒng)的原生服務接口開發(fā)得到QELF加載器,該QELF加載器可以且僅可以被內置于使用iPhone操作系統(tǒng)的移動終端(如iPhone手機)中運行;再如使用Android操作系統(tǒng)的原生服務接口開發(fā)得到QELF加載器,該QELF加載器可以且僅可以被內置于使用Android操作系統(tǒng)的移動終端(如=Android手機)中運行;再如使用Windows操作系統(tǒng)開發(fā)得到的QELF加載器,該QELF加載器可以且僅可以被內置于使用Windows操作系統(tǒng)的移動終端(如PC機)中運行。所述移動終端平臺可以為Palm操作系統(tǒng)、Symbian操作系統(tǒng)、Windowsmobile操作系統(tǒng)、Android操作系統(tǒng)、iPhone操作系統(tǒng)、黑莓操作系統(tǒng)、Windows操作系統(tǒng)、Unix操作系統(tǒng)及Linux操作系統(tǒng)中的任一種。使用各種平臺的移動終端的上層操作系統(tǒng)完全不相同,但從硬件角度看,使用基于相同指令的CPU的移動終端卻能夠運行相同指令的QELF程序,比如以Nokia手機(使用Symbian操作系統(tǒng))、Windowsmobile手機、Android手機和iPhone手機為例,雖然上述各個手機的上層操作系統(tǒng)(平臺)完全不相同,但它們均采用基于ARM指令的CPU,因此從硬件角度看,上述各個手機平臺的原生可執(zhí)行程序均為ARM指令的可執(zhí)行程序,因此,當QELF文件中包含ARM指令的QELF程序時,該QELF文件可以在上述各個手機中使用;再如針對各種PC機(使用Windows操作系統(tǒng)、Unix操作系統(tǒng)或Linux操作系統(tǒng)),雖然上述各種PC機的上層操作系統(tǒng)(平臺)完全不相同,但它們均采用基于X86指令的CPU,因此從硬件角度看,上述各種PC機平臺的原生可執(zhí)行程序均為X86指令的可執(zhí)行程序,因此,當QELF文件中包含X86指令的QELF程序時,該QELF文件可以在上述各種PC機中使用;可以理解的是,上述僅為舉例,其他情況下可類似分析,在此不贅述。另外,當QELF文件中同時包含ARM指令的QELF程序和X86指令的QELF程序時,該QELF文件既可以在上述各種手機上使用,也可以在上述各種PC機上使用,當QELF文件被其應用的移動終端讀取后,所述加載模塊20則從QELF文件中選擇與該移動終端的平臺相匹配QELF程序進行加載。具體地,當所述SlOl讀取出QELF文件后,由于所述QELF文件包括的QELF程序為X86指令的可執(zhí)行程序、ARM指令的可執(zhí)行程序、Java指令的可執(zhí)行程序和Misc指令的可執(zhí)行程序的任一種或多種,所述S102根據其所在的移動終端的當前平臺環(huán)境,選擇與當前平臺環(huán)境相匹配的QELF程序,將所述選擇的QELF程序加載至所述移動終端的內存中。所述S102對選擇的QELF程序進行加載的過程與現(xiàn)有技術類似,在此不贅述。S103,運行所述加載的可執(zhí)行程序。具體實現(xiàn)中,所述S103采用所述移動終端的CPU來執(zhí)行,當所述S102將選擇的QELF程序加載至所述移動終端的內存后,所述移動終端的CPU從該QELF程序的程序起始點運行該QELF程序。可以理解的是,由于加載的QELF程序包含的指令與所述移動終端的CPU基于的指令相同,因此,所述CPU運行該QELF程序與運行所述移動終端當前平臺的原生可執(zhí)行程序的過程相同,在此不贅述。本發(fā)明實施例可實現(xiàn)跨平臺的可執(zhí)行程序的加載運行,降低了軟件開發(fā)商的開發(fā)、運營成本,提高了程序執(zhí)行效率和性能高。為了更清楚的說明本發(fā)明,下面將以一個具體實例來說明本發(fā)明的可執(zhí)行程序的應用。請參見圖6,為本發(fā)明的可執(zhí)行程序的應用的實施例的結構示意圖;本實施例以Windowsmobile手機為例進行說明。如圖6所不,Windowsmobile手機中,其下層為手機硬件,米用基于ARM指令的CPU;上層為Windowsmobile操作系統(tǒng);Windowsmobile手機中內置有QELF加載器和平臺抽象層,該QELF加載器是基于Windowsmobile操作系統(tǒng)的原生服務接口開發(fā)得到的,該平臺抽象層是基于Windowsmobile操作系統(tǒng)的原生接口封裝實現(xiàn)的。QELF文件中包含復合指令的QELF程序,該QELF程序基于該平臺抽象層開發(fā)編譯得至IJ。Windowsmobile手機首先讀取QELF文件,QELF加載器從該QELF文件中選擇ARM指令的QELF程序,然后為該QELF程序分配內存,將該QELF程序讀入內存中,然后依次處理代碼段、數(shù)據段、BSS段和其他段,最后遞歸加載所有依賴庫,完成加載后,運行起始點跳轉到該QELF程序的代碼段,QELF加載器交出CPU控制權,則Windowsmobile手機的CPU從跳轉到的程序起始點運行該QELF程序。本發(fā)明實施例可實現(xiàn)跨平臺的可執(zhí)行程序的加載運行,降低了軟件開發(fā)商的開發(fā)、運營成本,提高了程序執(zhí)行效率和性能高。通過上述實施例的描述,本發(fā)明實施例從標準格式文件(QELF文件)中選擇與當前平臺環(huán)境相匹配的可執(zhí)行程序進行加載運行,該QELF文件包含一種或多種指令的可執(zhí)行程序,可直接應用于各種移動終端平臺,各移動終端平臺可直接從該可執(zhí)行程序文件中選擇與當前平臺相適配的可執(zhí)行程序進行加載運行,實現(xiàn)了可執(zhí)行程序的跨平臺應用,降低了軟件開發(fā)商的開發(fā)、運營成本,提高了程序執(zhí)行效率和性能;同時,本發(fā)明實施例采用統(tǒng)一的標準接口規(guī)范對各種平臺的原生服務接口進行標準化封裝,使各種平臺均能夠以標準服務接口的形式向外提供服務,在此基礎上進行軟件開發(fā)時,則不需要再考慮平臺差異,實現(xiàn)了開發(fā)得到的同一份軟件源代碼可以在所有平臺上公用,實現(xiàn)了可執(zhí)行程序的跨平臺應用,降低了軟件開發(fā)商的開發(fā)、運營成本,提高了程序執(zhí)行效率和性能。本領域普通技術人員可以理解實現(xiàn)上述實施例方法中的全部或部分流程,是可以通過計算機程序來指令相關的硬件來完成,所述的程序可存儲于一計算機可讀取存儲介質中,該程序在執(zhí)行時,可包括如上述各方法的實施例的流程。其中,所述的存儲介質可為磁碟、光盤、只讀存儲記憶體(Read-OnlyMemory,ROM)或隨機存儲記憶體(RandomAccessMemory,RAM)等。以上所揭露的僅為本發(fā)明較佳實施例而已,當然不能以此來限定本發(fā)明之權利范圍,本領域普通技術人員可以理解實現(xiàn)上述實施例的全部或部分流程,并依本發(fā)明權利要求所作的等同變化,仍屬于發(fā)明所涵蓋的范圍。權利要求1.一種可執(zhí)行程序的跨平臺實現(xiàn)方法,其特征在于,包括讀取標準格式文件;從所述標準格式文件中選擇與當前平臺環(huán)境相匹配的可執(zhí)行程序,將所述可執(zhí)行程序加載至當前平臺的內存中;運行所述加載的可執(zhí)行程序。2.如權利要求I所述的方法,其特征在于,所述標準格式文件為QELF文件,所述QELF文件中包含至少ー個QELF程序;所述QELF程序為X86指令的可執(zhí)行程序、ARM指令的可執(zhí)行程序、Java指令的可執(zhí)行程序和Misc指令的可執(zhí)行程序中的任ー種或多種。3.如權利要求2所述的方法,其特征在于,所述QELF文件中的任一QELF程序均包含用于調用所述當前平臺的標準服務接ロ的函數(shù);所述QELF程序為調用所述標準服務接ロ開發(fā)得到的軟件源代碼經編譯獲得的可執(zhí)行程序。4.如權利要求3所述的方法,其特征在于,所述標準服務接ロ為所述當前平臺的原生服務接ロ按預設的標準接ロ規(guī)范封裝后獲得的服務接ロ。5.如權利要求1-4任一項所述的方法,其特征在于,所述當前平臺包括Palm操作系統(tǒng)、Symbian操作系統(tǒng)、Windowsmobile操作系統(tǒng)、Android操作系統(tǒng)、iPhone操作系統(tǒng)、黑莓操作系統(tǒng)、Windows操作系統(tǒng)、Unix操作系統(tǒng)及Linux操作系統(tǒng)中的任ー種或多種。6.一種移動終端,其特征在于,包括讀取模塊,用于讀取標準格式文件;加載模塊,用于從所述讀取模塊讀取的標準格式文件中選擇與當前平臺環(huán)境相匹配的可執(zhí)行程序,將所述可執(zhí)行程序加載至當前平臺的內存中;執(zhí)行模塊,用于運行所述加載模塊加載的可執(zhí)行程序。7.如權利要求6所述的移動終端,其特征在于,還包括標準化模塊,用于按預設的標準接ロ規(guī)范,對所述當前平臺的原生服務接ロ進行標準化封裝,獲得標準服務接ロ。8.如權利要求7所述的移動終端,其特征在于所述標準格式文件為QELF文件,所述QELF文件中包含至少ー個QELF程序;所述QELF程序為X86指令的可執(zhí)行程序、ARM指令的可執(zhí)行程序、Java指令的可執(zhí)行程序和Misc指令的可執(zhí)行程序中的任ー種或多種。9.如權利要求8所述的移動終端,其特征在于,所述加載模塊為QELF加載器。10.如權利要求8所述的移動終端,其特征在于,所述標準化模塊為平臺抽象層。11.如權利要求10所述的移動終端,其特征在于,所述QELF文件中的任一QELF程序均包含用于調用所述平臺抽象層的標準服務接ロ的函數(shù);所述QELF程序為調用所述標準服務接ロ開發(fā)得到的軟件源代碼經編譯獲得的可執(zhí)行程序。12.如權利要求6-11任一項所述的移動終端,其特征在于,所述當前平臺為所述移動終端的當前操作系統(tǒng);所述移動終端的當前操作系統(tǒng)為Palm操作系統(tǒng)、Symbian操作系統(tǒng)、Windowsmobile操作系統(tǒng)、Android操作系統(tǒng)、iPhone操作系統(tǒng)、黑莓操作系統(tǒng)、Windows操作系統(tǒng)、Unix操作系統(tǒng)及Linux操作系統(tǒng)中的任ー種。全文摘要本發(fā)明實施例公開了提供了一種可執(zhí)行程序的跨平臺實現(xiàn)方法,包括讀取標準格式文件;從所述標準格式文件中選擇與當前平臺環(huán)境相匹配的可執(zhí)行程序,將所述可執(zhí)行程序加載至當前平臺的內存中;運行所述加載的可執(zhí)行程序。本發(fā)明實施例還公開了一種移動終端。采用本發(fā)明,可實現(xiàn)移動終端的跨平臺的可執(zhí)行程序的加載運行,執(zhí)行效率高、性能高、成本低。文檔編號G06F9/48GK102681893SQ20111005612公開日2012年9月19日申請日期2011年3月9日優(yōu)先權日2011年3月9日發(fā)明者謝勇波申請人:騰訊科技(深圳)有限公司