CN102681893A - 可执行程序的跨平台实现方法及移动终端 - Google Patents
可执行程序的跨平台实现方法及移动终端 Download PDFInfo
- Publication number
- CN102681893A CN102681893A CN2011100561214A CN201110056121A CN102681893A CN 102681893 A CN102681893 A CN 102681893A CN 2011100561214 A CN2011100561214 A CN 2011100561214A CN 201110056121 A CN201110056121 A CN 201110056121A CN 102681893 A CN102681893 A CN 102681893A
- Authority
- CN
- China
- Prior art keywords
- qelf
- program
- executable program
- operating system
- platform
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Abstract
本发明实施例公开了提供了一种可执行程序的跨平台实现方法,包括:读取标准格式文件;从所述标准格式文件中选择与当前平台环境相匹配的可执行程序,将所述可执行程序加载至当前平台的内存中;运行所述加载的可执行程序。本发明实施例还公开了一种移动终端。采用本发明,可实现移动终端的跨平台的可执行程序的加载运行,执行效率高、性能高、成本低。
Description
技术领域
本发明涉及移动终端的操作系统的技术领域,尤其涉及一种可执行程序的跨平台实现方法及移动终端。
背景技术
OS(Operating System,操作系统)是控制其他程序运行,管理系统资源并为用户提供操作界面的系统软件的集合,OS为具有并发性、共享性、虚拟性和不确定性的平台。
目前,市面上存在多种移动终端平台,以智能手机平台为例,主要包括:Palm OS、Symbian、Windows mobile、Linux、Android、iPhone OS和黑莓七种平台。各种平台的手机都有自成体系的一整套软件开发环境,且各自之间的软件开发环境差异极大,导致各种平台的可执行程序都是专用的,两两之间互不兼容。软件开发商开发出一款软件后,需要针对该款软件,为各种平台配备专门的研发团队,使该款软件能适配各种平台,导致软件开发代价过高,运营和维护成本高昂。
由于java程序是目前唯一一种可实现跨平台开发的程序,许多软件开发商则采用java程序开发软件,在各平台上安装java虚拟机,实现软件的适配。但由于java程序是一种解释执行的程序,其与各种平台的原生可执行程序相比,执行效率较低;一般地, java虚拟机的硬件配置较低,采用java虚拟机来进行程序的加载运行,性能较低、电源耗费大,且易受硬件配置的限制和影响。因此,一种执行效率高、性能高、电源耗费小的跨平台可执行程序的实现成为一个重要的研究方向。
发明内容
本发明实施例所要解决的技术问题在于,提供一种可执行程序的跨平台实现方法及移动终端,可实现移动终端的跨平台的可执行程序的加载运行,执行效率高、性能高、成本低。
为了解决上述技术问题,本发明实施例提供了一种可执行程序的跨平台实现方法,包括:
读取标准格式文件;
从所述标准格式文件中选择与当前平台环境相匹配的可执行程序,将所述可执行程序加载至当前平台的内存中;
运行所述加载的可执行程序。
其中,所述标准格式文件为QELF(QQ Executable and Linkable Format,QQ可执行连接格式)文件,所述QELF文件中包含至少一个QELF程序;
所述QELF程序为: X86指令的可执行程序、ARM(Advanced RISC Machines,一种微处理器)指令的可执行程序、Java指令的可执行程序和Misc指令的可执行程序中的任一种或多种。
其中,所述QELF文件中的任一QELF程序均包含:用于调用所述当前平台的标准服务接口的函数;
所述QELF程序为:调用所述标准服务接口开发得到的软件源代码经编译获得的可执行程序。
其中,所述标准服务接口为:所述当前平台的原生服务接口按预设的标准接口规范封装后获得的服务接口。
其中,所述当前平台包括:Palm操作系统、Symbian操作系统、Windows mobile操作系统、Android操作系统、iPhone操作系统、黑莓操作系统、Windows操作系统、Unix操作系统及 Linux操作系统中的任一种或多种。
相应地,一种移动终端,包括:
读取模块,用于读取标准格式文件;
加载模块,用于从所述读取模块读取的标准格式文件中选择与当前平台环境相匹配的可执行程序,将所述可执行程序加载至当前平台的内存中;
执行模块,用于运行所述加载模块加载的可执行程序。
其中,所述移动终端还包括:标准化模块,用于按预设的标准接口规范,对所述当前平台的原生服务接口进行标准化封装,获得标准服务接口。
其中:所述标准格式文件为QELF文件,所述QELF文件中包含至少一个QELF程序;
所述QELF程序为: X86指令的可执行程序、ARM指令的可执行程序、Java指令的可执行程序和Misc指令的可执行程序中的任一种或多种。
其中,所述加载模块为QELF加载器。
其中,所述标准化模块为平台抽象层。
其中,所述QELF文件中的任一QELF程序均包含:用于调用所述平台抽象层的标准服务接口的函数;
所述QELF程序为:调用所述标准服务接口开发得到的软件源代码经编译获得的可执行程序。
其中,所述当前平台为所述移动终端的当前操作系统;
所述移动终端的当前操作系统为:Palm操作系统、Symbian操作系统、Windows mobile操作系统、Android操作系统、iPhone操作系统、黑莓操作系统、Windows操作系统、Unix操作系统及 Linux操作系统中的任一种。
实施本发明实施例,具有如下有益效果:
1、本发明实施例从标准格式文件(QELF文件)中选择与当前平台环境相匹配的可执行程序进行加载运行,该QELF文件包含一种或多种指令的可执行程序,可直接应用于各种移动终端平台,各移动终端平台可直接从该可执行程序文件中选择与当前平台相适配的可执行程序进行加载运行,实现了可执行程序的跨平台应用,降低了软件开发商的开发、运营成本,提高了程序执行效率和性能。
2、本发明实施例采用统一的标准接口规范对各种平台的原生服务接口进行标准化封装,使各种平台均能够以标准服务接口的形式向外提供服务,在此基础上进行软件开发时,则不需要再考虑平台差异,实现了开发得到的同一份软件源代码可以在所有平台上公用,实现了可执行程序的跨平台应用,降低了软件开发商的开发、运营成本,提高了程序执行效率和性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明的移动终端的第一实施例的结构示意图;
图2为本发明的移动终端的第二实施例的结构示意图;
图3为本发明的QELF程序的实施例的结构示意图;
图4为本发明的QELF文件的实施例的结构示意图;
图5为本发明的可执行程序的跨平台实现方法的实施例的流程图;
图6为本发明的可执行程序的应用的实施例的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例的移动终端包括但不限于:手机、智能手机、PDA(Personal Digital Assistant,个人数码助理)、PC(Personal Computer,个人计算机)机等终端。
请参见图1,为本发明的移动终端的第一实施例的结构示意图;所述移动终端包括:
读取模块10,用于读取标准格式文件。
具体实现中,该标准格式文件优选为QELF格式的文件,该QELF文件中包含至少一个QELF程序,其中,任一QELF程序均包含可以用来调用标准服务接口的函数,即QELF程序是使用任一移动终端平台的标准服务接口开发得到的软件源代码经编译获得的可执行程序。具体地,所述QELF程序为: X86指令的可执行程序、ARM指令的可执行程序、Java指令的可执行程序和Misc指令的可执行程序的任一种或多种。可以理解的是,QELF文件中的QELF程序并不限于上述四种指令,其还可以根据实际应用需要,为其他指令的QELF程序。QELF文件存储于所述移动终端的存储器中,当需要运行QELF文件中的可执行程序时,所述读取模块10从所述移动终端的存储器中读取所述QELF文件。所述读取模块10对可执行程序文件的读取过程与现有技术相同,在此不赘述。
加载模块20,用于从所述读取模块10读取的标准格式文件中选择与当前平台环境相匹配的可执行程序,将所述可执行程序加载至当前平台的内存中。
具体实现中,所述加载模块20优选为使用平台的原生接口开发得到的QELF加载器,该QELF加载器预先内置于移动终端平台中;比如:使用iPhone操作系统的原生服务接口开发得到QELF加载器,该QELF加载器可以且仅可以被内置于使用iPhone操作系统的移动终端(如iPhone手机)中运行;再如:使用Android操作系统的原生服务接口开发得到QELF加载器,该QELF加载器可以且仅可以被内置于使用Android操作系统的移动终端(如:Android手机)中运行;再如:使用Windows操作系统开发得到的QELF加载器,该QELF加载器可以且仅可以被内置于使用Windows操作系统的移动终端(如PC机)中运行。
所述移动终端平台可以为:Palm操作系统、Symbian操作系统、Windows mobile操作系统、Android操作系统、iPhone操作系统、黑莓操作系统、Windows操作系统、Unix操作系统及 Linux操作系统中的任一种。使用各种平台的移动终端的上层操作系统完全不相同,但从硬件角度看,使用基于相同指令的CPU的移动终端却能够运行相同指令的QELF程序,比如:以Nokia手机(使用Symbian操作系统)、Windows mobile手机、Android手机和iPhone手机为例,虽然上述各个手机的上层操作系统(平台)完全不相同,但它们均采用基于ARM指令的CPU,因此从硬件角度看,上述各个手机平台的原生可执行程序均为ARM指令的可执行程序,因此,当QELF文件中包含ARM指令的QELF程序时,该QELF文件可以在上述各个手机中使用;再如:针对各种PC机(使用Windows操作系统、Unix操作系统或Linux操作系统),虽然上述各种PC机的上层操作系统(平台)完全不相同,但它们均采用基于X86指令的CPU,因此从硬件角度看,上述各种PC机平台的原生可执行程序均为X86指令的可执行程序,因此,当QELF文件中包含X86指令的QELF程序时,该QELF文件可以在上述各种PC机中使用;可以理解的是,上述仅为举例,其他情况下可类似分析,在此不赘述。另外,当QELF文件中同时包含ARM指令的QELF程序和X86指令的QELF程序时,该QELF文件既可以在上述各种手机上使用,也可以在上述各种PC机上使用,当QELF文件被其应用的移动终端读取后,所述加载模块20则从QELF文件中选择与该移动终端的平台相匹配QELF程序进行加载。具体地,当所述读取模块10读取出QELF文件后,由于所述QELF文件包括的QELF程序为:X86指令的可执行程序、ARM指令的可执行程序、Java指令的可执行程序和Misc指令的可执行程序中的任一种或多种,所述加载模块20根据其所在的移动终端的当前平台环境,选择与当前平台环境相匹配的QELF程序,将所述选择的QELF程序加载至所述移动终端的内存中。所述加载模块20对选择的QELF程序进行加载的过程与现有技术类似,在此不赘述。
执行模块30,用于运行所述加载模块20加载的可执行程序。
具体实现中,所述执行模块30为所述移动终端的CPU,当所述加载模块20将选择的QELF程序加载至所述移动终端的内存后,所述移动终端的CPU从该QELF程序的程序起始点运行该QELF程序。可以理解的是,由于加载的QELF程序包含的指令与所述移动终端的CPU基于的指令相同,因此,所述CPU运行该QELF程序与运行所述移动终端当前平台的原生可执行程序的过程相同,在此不赘述。
本发明实施例可实现跨平台的可执行程序的加载运行,降低了软件开发商的开发、运营成本,提高了程序执行效率和性能高。
请参见图2,为本发明的移动终端的第二实施例的结构示意图;与上一实施例相同,所述移动终端包括:读取模块10、加载模块20和执行模块30。本实施例中,所述移动终端还包括:
标准化模块40,用于按预设的标准接口规范,对所述当前平台的原生服务接口进行标准化封装,获得标准服务接口。
具体实现中,若要实现可执行程序的跨平台使用,则需要利用各种平台的服务,由于不同平台提供相同服务的原生服务接口(原生API)完全不同,因此需要抽象各种平台的原生服务接口,把各种平台的所有原生服务接口全部标准化。具体地,可预先定义一套标准接口规范,对各种平台的原生服务接口均按照该规范一一标准化封装,使各种平台均能够以标准服务接口的形式向外提供服务,在此基础上进行软件开发时,则不需要再考虑平台差异,可实现开发得到的同一份软件源代码可以在所有平台上公用,实现可执行程序的跨平台应用。
以手机为例,由于目前主流手机平台:Windows mobil、Symbian、Androic、iPhone等都支持ANSIC语言,因此可以ANSIC语言来定义标准接口规范,定义的规范中的服务接口实例如下:
文件系统接口:
QFILE* QFile_Open(QWCHAR* pName, const QWCHAR* pMode); //文件打开
QVOID QFile_Close(QFILE* pFile); //文件关闭
QINT QFile_Read(QFILE* pFile, QVOID* pData, QINT nSize); //读文件
QINT QFile_Write(QFILE* pFile, QVOID* pData, QINT nSize); //写文件
QBOOL QFile_Seek(QFILE* pFile, QINT offset, QINT origin); //文件读写位置移动
QBOOL QFile_GetSize(QFILE* pFile, QINT* pnSize); //获得文件体积
QBOOL QFile_Move(QWCHAR *pFileName, QWCHAR* pNewFileName); //文件移动
绘图接口:
QGDI_SetFont //设置字体样式
QGDI_DrawText //在屏幕上输出文本
QGDI_GetTextHeight //获得文本高度
QGDI_FillRect //绘制并填充一个矩形
其它接口举例:
QSendSMS //发送短信
QGetTime //获取时间
可以理解的是,上述标准服务接口仅为举例,根据各种平台提供的服务接口的功能,还包括其他标准服务接口,其他情况可类似分析,在此不赘述。
所述标准化模块40为使用各种平台的原生服务接口开发得到的平台抽象层,该平台抽象层是各种平台的原生API封装实现,由于各种平台的原生API各不相同,因此各种平台的平台抽象层的实现方法也有差异,比如:Windows mobile平台的平台抽象层中的各种标准服务接口采用win32API或TAPI封装实现;再如:Symbian平台的平台抽象层中的各种标准服务接口采用s60API封装实现;再如:iPhone平台的平台抽象层的各种标准服务接口采用iPhone sdk或Objective-C封装实现。基于各种平台实现的平台抽象层,只能内置于使用对应平台的移动终端中,比如:由Windows mobile平台封装实现的平台抽象层,仅能内置于使用Windows mobile操作系统的移动终端(Windows mobile手机)中;由iPhone平台封装实现的平台抽象层,仅能内置于使用iPhone操作系统的移动终端(iPhone手机)中。平台抽象层屏蔽了移动终端平台的相关细节,基于平台抽象层开发的应用软件可自动适配到所有具有平台抽象层的移动终端中运行。
如前述,QELF程序是使用任一移动终端平台的标准服务接口开发得到的软件源代码经编译获得的可执行程序。具体地,用户可在任一具有平台抽象层的移动终端平台上,通过调用该平台抽象层的标准服务接口开发得到软件源代码, 因此,QELF程序包含可以用来调用标准服务接口的函数(或代码)。当开发出软件源代码后,需要使用编译器对该软件源代码进行编译,以获得QELF程序,进而获得QELF文件。具体实现中,QELF程序的编译方法有两种,其一为:可根据需要使用的平台开发开源的gcc编译器,改写该开源的gcc编译器,则可直接从源代码生成QELF程序。比如:开发得到开源的ARM gcc编译器,则通过改写该开源的ARM gcc编译器的源代码,编译生成ARM指令的QELF程序;再如:开发得到开源的复合指令的gcc编译器,则通过改写该开源的复合指令的gcc编译器的源代码,编译生成复合指令(包括:ARM指令、X86指令、Java指令和Misc指令等)的QELF程序。其二为:可利用现有的编译器进行编译,其中,现有的常见编译环境有:针对Windows mobile手机,其使用vs2003、vs2005和vs2008编译器,源代码编译生成ARM指令的PE格式的可执行程序;针对Nokia手机,其使用carbide C++和s60 sdk两个常用编译器,源代码编译生成ARM指令的ELF格式的可执行程序;针对Android手机,其使用ARM-Linux-gcc编译器,源代码编译生成ELF可执行程序。因此,采用第二种方式得到QELF程序时,如:可利用已有的vs2005编译器生成PE可执行程序,然后从PE可执行程序中提取需要的数据(如从PE可执行程序中提取代码段、数据段、BSS的内容),重新按照QELF格式进行打包,得到QELF程序。
QELF程序与现有的PE可执行程序以及ELE可执行程序的结构有一些差别。请一并参见图3,为本发明的QELF程序的实施例的结构示意图。现有的各种可执行程序的格式不完全相同,但必然会有“代码段”、“数据段”和“BSS段”,其中,代码段存储指令代码,针对Windows 操作系统的移动终端(Windows mobile手机或PC机)中,该PE可执行程序名为.code,根据CPU体系结构该代码段可能存X86指令或ARM指令;数据段:存常量数据,PE可执行程序名为,data;BSS段:存已初始化的全局变量;当然,可执行程序中还可能包括其他段,如初始化为0的数据段,重定位段,调试信息段,等等。如图3所示,QELF程序也包含上述三个必要的段结构和其他段结构,另外,QELF程序中还引入了虚函数表段,该虚函数表段可以将软件需要用到的平台抽象层的标准服务接口集中起来,以C语言描述的话,该虚函数段定义了全局函数指针,软件源代码里直接调用这些全局函数指针,当该QELF程序被所述QELF加载器加载时,由该QELF加载器填入实际的各种标准服务接口的函数地址,软件源代码则可通过全局函数指针调用到应用的所述移动终端平台的服务函数,且这些函数被集中在该虚函数表段内,方便QELF加载器加载。
软件源代码经编译器编译得到的QELF程序经过打包封装,则得到了QELF文件,QELF文件中可包含一种指令的QELF程序,QELF文件中也可包含多种指令(复合指令)的QELF程序。请一并参见图4,为本发明的QELF文件的实施例的结构示意图;如图4所示,QELF文件中包括X86指令的QELF程序、ARM指令的QELF程序、Java指令的QELF程序、Misc指令的QELF程序和其他指令的QELF程序,并且通过文件数据头标记了这些信息(包括指令信息、位置信息等)。图4所示的复合指令的QELF文件的实现如下:假定使用开源的QELF-gcc编译器,则该QELF-gcc编译器需要分别包含X86-Linux-gcc、ARM-Linux-gcc、Misc-Linux-gcc等编译器功能,QELF-gcc根据编译选项,自动调用其内的各编译器进行编译,并把编译结果打包生成图4所示的QELF文件。该QELF文件在使用时,由QELF加载器从中选择与当前移动终端平台相匹配的QELF程序进行加载,然后交由CPU运行。
本发明实施例可实现跨平台的可执行程序的加载运行,降低了软件开发商的开发、运营成本,提高了程序执行效率和性能高。
为了更清楚的说明本发明,下面将对本发明的可执行程序的跨平台实现方法进行详细介绍。
请参见图5,为本发明的可执行程序的跨平台实现方法的实施例的流程图;所述方法包括:
S101,读取标准格式文件。
具体实现中,该标准格式文件可以为QELF格式的文件,该QELF文件中包含至少一个QELF程序,其中,任一QELF程序均包含可以用来调用标准服务接口的函数,即QELF程序是使用任一移动终端平台的标准服务接口开发得到的软件源代码经编译获得的可执行程序。具体地,所述QELF程序为: X86指令的可执行程序、ARM指令的可执行程序、Java指令的可执行程序和Misc指令的可执行程序中的任一种或多种。可以理解的是,QELF文件中的QELF程序并不限于上述四种指令,其还可以根据实际应用需要,为其他指令的QELF程序。QELF文件存储于所述移动终端的存储器中,当需要运行QELF文件中的可执行程序时,所述S101从所述移动终端的存储器中读取所述QELF文件。所述S101对可执行程序文件的读取过程与现有技术相同,在此不赘述。
S102,从所述标准格式文件中选择与当前平台环境相匹配的可执行程序,将所述可执行程序加载至当前平台的内存中。
具体实现中,所述S102优选采用使用平台的原生接口开发得到的QELF加载器,该QELF加载器预先内置于移动终端平台中;比如:使用iPhone操作系统的原生服务接口开发得到QELF加载器,该QELF加载器可以且仅可以被内置于使用iPhone操作系统的移动终端(如iPhone手机)中运行;再如:使用Android操作系统的原生服务接口开发得到QELF加载器,该QELF加载器可以且仅可以被内置于使用Android操作系统的移动终端(如:Android手机)中运行;再如:使用Windows操作系统开发得到的QELF加载器,该QELF加载器可以且仅可以被内置于使用Windows操作系统的移动终端(如PC机)中运行。
所述移动终端平台可以为:Palm操作系统、Symbian操作系统、Windows mobile操作系统、Android操作系统、iPhone操作系统、黑莓操作系统、Windows操作系统、Unix操作系统及 Linux操作系统中的任一种。使用各种平台的移动终端的上层操作系统完全不相同,但从硬件角度看,使用基于相同指令的CPU的移动终端却能够运行相同指令的QELF程序,比如:以Nokia手机(使用Symbian操作系统)、Windows mobile手机、Android手机和iPhone手机为例,虽然上述各个手机的上层操作系统(平台)完全不相同,但它们均采用基于ARM指令的CPU,因此从硬件角度看,上述各个手机平台的原生可执行程序均为ARM指令的可执行程序,因此,当QELF文件中包含ARM指令的QELF程序时,该QELF文件可以在上述各个手机中使用;再如:针对各种PC机(使用Windows操作系统、Unix操作系统或Linux操作系统),虽然上述各种PC机的上层操作系统(平台)完全不相同,但它们均采用基于X86指令的CPU,因此从硬件角度看,上述各种PC机平台的原生可执行程序均为X86指令的可执行程序,因此,当QELF文件中包含X86指令的QELF程序时,该QELF文件可以在上述各种PC机中使用;可以理解的是,上述仅为举例,其他情况下可类似分析,在此不赘述。另外,当QELF文件中同时包含ARM指令的QELF程序和X86指令的QELF程序时,该QELF文件既可以在上述各种手机上使用,也可以在上述各种PC机上使用,当QELF文件被其应用的移动终端读取后,所述加载模块20则从QELF文件中选择与该移动终端的平台相匹配QELF程序进行加载。具体地,当所述S101读取出QELF文件后,由于所述QELF文件包括的QELF程序为:X86指令的可执行程序、ARM指令的可执行程序、Java指令的可执行程序和Misc指令的可执行程序的任一种或多种,所述S102根据其所在的移动终端的当前平台环境,选择与当前平台环境相匹配的QELF程序,将所述选择的QELF程序加载至所述移动终端的内存中。所述S102对选择的QELF程序进行加载的过程与现有技术类似,在此不赘述。
S103,运行所述加载的可执行程序。
具体实现中,所述S103采用所述移动终端的CPU来执行,当所述S102将选择的QELF程序加载至所述移动终端的内存后,所述移动终端的CPU从该QELF程序的程序起始点运行该QELF程序。可以理解的是,由于加载的QELF程序包含的指令与所述移动终端的CPU基于的指令相同,因此,所述CPU运行该QELF程序与运行所述移动终端当前平台的原生可执行程序的过程相同,在此不赘述。
本发明实施例可实现跨平台的可执行程序的加载运行,降低了软件开发商的开发、运营成本,提高了程序执行效率和性能高。
为了更清楚的说明本发明,下面将以一个具体实例来说明本发明的可执行程序的应用。
请参见图6,为本发明的可执行程序的应用的实施例的结构示意图;本实施例以Windows mobile手机为例进行说明。如图6所示,Windows mobile手机中,其下层为手机硬件,采用基于ARM指令的CPU;上层为Windows mobile操作系统;Windows mobile手机中内置有QELF加载器和平台抽象层,该QELF加载器是基于Windows mobile操作系统的原生服务接口开发得到的,该平台抽象层是基于Windows mobile操作系统的原生接口封装实现的。QELF文件中包含复合指令的QELF程序,该QELF程序基于该平台抽象层开发编译得到。Windows mobile手机首先读取QELF文件,QELF加载器从该QELF文件中选择ARM指令的QELF程序,然后为该QELF程序分配内存,将该QELF程序读入内存中,然后依次处理代码段、数据段、BSS段和其他段,最后递归加载所有依赖库,完成加载后,运行起始点跳转到该QELF程序的代码段,QELF加载器交出CPU控制权,则Windows mobile手机的CPU从跳转到的程序起始点运行该QELF程序。
本发明实施例可实现跨平台的可执行程序的加载运行,降低了软件开发商的开发、运营成本,提高了程序执行效率和性能高。
通过上述实施例的描述,本发明实施例从标准格式文件(QELF文件)中选择与当前平台环境相匹配的可执行程序进行加载运行,该QELF文件包含一种或多种指令的可执行程序,可直接应用于各种移动终端平台,各移动终端平台可直接从该可执行程序文件中选择与当前平台相适配的可执行程序进行加载运行,实现了可执行程序的跨平台应用,降低了软件开发商的开发、运营成本,提高了程序执行效率和性能;同时,本发明实施例采用统一的标准接口规范对各种平台的原生服务接口进行标准化封装,使各种平台均能够以标准服务接口的形式向外提供服务,在此基础上进行软件开发时,则不需要再考虑平台差异,实现了开发得到的同一份软件源代码可以在所有平台上公用,实现了可执行程序的跨平台应用,降低了软件开发商的开发、运营成本,提高了程序执行效率和性能。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。
Claims (12)
1.一种可执行程序的跨平台实现方法,其特征在于,包括:
读取标准格式文件;
从所述标准格式文件中选择与当前平台环境相匹配的可执行程序,将所述可执行程序加载至当前平台的内存中;
运行所述加载的可执行程序。
2.如权利要求1所述的方法,其特征在于,所述标准格式文件为QELF文件,所述QELF文件中包含至少一个QELF程序;
所述QELF程序为: X86指令的可执行程序、ARM指令的可执行程序、Java指令的可执行程序和Misc指令的可执行程序中的任一种或多种。
3.如权利要求2所述的方法,其特征在于,所述QELF文件中的任一QELF程序均包含:用于调用所述当前平台的标准服务接口的函数;
所述QELF程序为:调用所述标准服务接口开发得到的软件源代码经编译获得的可执行程序。
4.如权利要求3所述的方法,其特征在于,所述标准服务接口为:所述当前平台的原生服务接口按预设的标准接口规范封装后获得的服务接口。
5.如权利要求1-4任一项所述的方法,其特征在于,所述当前平台包括:
Palm操作系统、Symbian操作系统、Windows mobile操作系统、Android操作系统、iPhone操作系统、黑莓操作系统、Windows操作系统、Unix操作系统及 Linux操作系统中的任一种或多种。
6.一种移动终端,其特征在于,包括:
读取模块,用于读取标准格式文件;
加载模块,用于从所述读取模块读取的标准格式文件中选择与当前平台环境相匹配的可执行程序,将所述可执行程序加载至当前平台的内存中;
执行模块,用于运行所述加载模块加载的可执行程序。
7.如权利要求6所述的移动终端,其特征在于,还包括:
标准化模块,用于按预设的标准接口规范,对所述当前平台的原生服务接口进行标准化封装,获得标准服务接口。
8.如权利要求7所述的移动终端,其特征在于:所述标准格式文件为QELF文件,所述QELF文件中包含至少一个QELF程序;
所述QELF程序为: X86指令的可执行程序、ARM指令的可执行程序、Java指令的可执行程序和Misc指令的可执行程序中的任一种或多种。
9.如权利要求8所述的移动终端,其特征在于,所述加载模块为QELF加载器。
10.如权利要求8所述的移动终端,其特征在于,所述标准化模块为平台抽象层。
11.如权利要求10所述的移动终端,其特征在于,所述QELF文件中的任一QELF程序均包含:用于调用所述平台抽象层的标准服务接口的函数;
所述QELF程序为:调用所述标准服务接口开发得到的软件源代码经编译获得的可执行程序。
12.如权利要求6-11任一项所述的移动终端,其特征在于,所述当前平台为所述移动终端的当前操作系统;
所述移动终端的当前操作系统为:Palm操作系统、Symbian操作系统、Windows mobile操作系统、Android操作系统、iPhone操作系统、黑莓操作系统、Windows操作系统、Unix操作系统及 Linux操作系统中的任一种。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110056121.4A CN102681893B (zh) | 2011-03-09 | 2011-03-09 | 可执行程序的跨平台实现方法及移动终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110056121.4A CN102681893B (zh) | 2011-03-09 | 2011-03-09 | 可执行程序的跨平台实现方法及移动终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102681893A true CN102681893A (zh) | 2012-09-19 |
CN102681893B CN102681893B (zh) | 2016-06-29 |
Family
ID=46813862
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110056121.4A Active CN102681893B (zh) | 2011-03-09 | 2011-03-09 | 可执行程序的跨平台实现方法及移动终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102681893B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103473050A (zh) * | 2013-09-02 | 2013-12-25 | 福州瑞芯微电子有限公司 | android开机logo在window上的转化方法 |
CN104572235A (zh) * | 2014-12-31 | 2015-04-29 | 北京奇虎科技有限公司 | 一种可加载内核模块的编译方法和装置 |
CN106598602A (zh) * | 2016-12-16 | 2017-04-26 | 中南大学 | 一种支持多操作系统加载的方法及加载器 |
CN107463423A (zh) * | 2017-07-31 | 2017-12-12 | 武汉斗鱼网络科技有限公司 | 依赖包工具的验证方法、存储介质、电子设备及系统 |
CN108614705A (zh) * | 2017-02-07 | 2018-10-02 | 腾讯科技(深圳)有限公司 | 一种数据编译处理方法及终端 |
CN109189221A (zh) * | 2018-08-23 | 2019-01-11 | 郑州航空工业管理学院 | 一种跨手机平台的用户行为识别方法 |
CN110737468A (zh) * | 2018-07-19 | 2020-01-31 | 北京路上创客技术服务有限责任公司 | 一种可执行程序的跨平台实现方法 |
CN110914768A (zh) * | 2017-06-07 | 2020-03-24 | 布鲁克斯自动化(德国)有限公司 | 用于使用pc程序控制plc的方法 |
CN111694495A (zh) * | 2020-06-18 | 2020-09-22 | 上海泛微网络科技股份有限公司 | 一种快速对接第三方app平台的方法、系统和存储介质 |
CN113094123A (zh) * | 2021-03-23 | 2021-07-09 | 北京达佳互联信息技术有限公司 | 应用程序中功能的实现方法、装置、电子设备和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1391670A (zh) * | 1999-09-30 | 2003-01-15 | 通用仪器公司 | 数字终端中硬件配置的动态检测 |
CN1630851A (zh) * | 2002-02-11 | 2005-06-22 | 英特尔公司 | 用于在预存储器执行环境中链接固件模块的方法和系统 |
US20080222160A1 (en) * | 2003-09-15 | 2008-09-11 | Macdonald Craig | Method and system for providing a program for execution without requiring installation |
CN101625644A (zh) * | 2009-08-04 | 2010-01-13 | 大唐微电子技术有限公司 | 闪存芯片操作方法、在线仿真器和闪存芯片操作系统 |
WO2010138773A2 (en) * | 2009-05-27 | 2010-12-02 | Microsoft Corporation | Package design and generation |
-
2011
- 2011-03-09 CN CN201110056121.4A patent/CN102681893B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1391670A (zh) * | 1999-09-30 | 2003-01-15 | 通用仪器公司 | 数字终端中硬件配置的动态检测 |
CN1630851A (zh) * | 2002-02-11 | 2005-06-22 | 英特尔公司 | 用于在预存储器执行环境中链接固件模块的方法和系统 |
US20080222160A1 (en) * | 2003-09-15 | 2008-09-11 | Macdonald Craig | Method and system for providing a program for execution without requiring installation |
WO2010138773A2 (en) * | 2009-05-27 | 2010-12-02 | Microsoft Corporation | Package design and generation |
CN101625644A (zh) * | 2009-08-04 | 2010-01-13 | 大唐微电子技术有限公司 | 闪存芯片操作方法、在线仿真器和闪存芯片操作系统 |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103473050A (zh) * | 2013-09-02 | 2013-12-25 | 福州瑞芯微电子有限公司 | android开机logo在window上的转化方法 |
CN104572235B (zh) * | 2014-12-31 | 2019-02-26 | 北京奇虎科技有限公司 | 一种可加载内核模块的编译方法和装置 |
CN104572235A (zh) * | 2014-12-31 | 2015-04-29 | 北京奇虎科技有限公司 | 一种可加载内核模块的编译方法和装置 |
CN106598602A (zh) * | 2016-12-16 | 2017-04-26 | 中南大学 | 一种支持多操作系统加载的方法及加载器 |
CN108614705B (zh) * | 2017-02-07 | 2022-06-03 | 腾讯科技(深圳)有限公司 | 一种数据编译处理方法及终端 |
CN108614705A (zh) * | 2017-02-07 | 2018-10-02 | 腾讯科技(深圳)有限公司 | 一种数据编译处理方法及终端 |
CN110914768A (zh) * | 2017-06-07 | 2020-03-24 | 布鲁克斯自动化(德国)有限公司 | 用于使用pc程序控制plc的方法 |
CN110914768B (zh) * | 2017-06-07 | 2023-06-30 | 布鲁克斯自动化(德国)有限公司 | 用于使用pc程序控制plc的方法 |
CN107463423B (zh) * | 2017-07-31 | 2020-04-10 | 武汉斗鱼网络科技有限公司 | 依赖包工具的验证方法、存储介质、电子设备及系统 |
CN107463423A (zh) * | 2017-07-31 | 2017-12-12 | 武汉斗鱼网络科技有限公司 | 依赖包工具的验证方法、存储介质、电子设备及系统 |
CN110737468A (zh) * | 2018-07-19 | 2020-01-31 | 北京路上创客技术服务有限责任公司 | 一种可执行程序的跨平台实现方法 |
CN109189221A (zh) * | 2018-08-23 | 2019-01-11 | 郑州航空工业管理学院 | 一种跨手机平台的用户行为识别方法 |
CN109189221B (zh) * | 2018-08-23 | 2021-07-16 | 郑州航空工业管理学院 | 一种跨手机平台的用户行为识别方法 |
CN111694495A (zh) * | 2020-06-18 | 2020-09-22 | 上海泛微网络科技股份有限公司 | 一种快速对接第三方app平台的方法、系统和存储介质 |
CN113094123A (zh) * | 2021-03-23 | 2021-07-09 | 北京达佳互联信息技术有限公司 | 应用程序中功能的实现方法、装置、电子设备和存储介质 |
WO2022199111A1 (zh) * | 2021-03-23 | 2022-09-29 | 北京卓越乐享网络科技有限公司 | 应用程序中功能的实现方法、装置、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN102681893B (zh) | 2016-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102681893A (zh) | 可执行程序的跨平台实现方法及移动终端 | |
JP5295379B2 (ja) | 組み込みプラットフォームにおけるプログラムの動的リンキング方法および組み込みプラットフォーム | |
CN103365668B (zh) | 一种动态链接库装载和链接的方法、装置 | |
CN103488466B (zh) | 用于执行应用程序的方法和装置 | |
US20130061240A1 (en) | Two way communication support for heterogenous processors of a computer platform | |
CN101957766B (zh) | 一种字节码织入方法、装置及系统 | |
CN107193544B (zh) | 一种应用程序组件化开发方法及装置 | |
CN102023867B (zh) | 一种终端二次开发装置及二次开发平台构建方法 | |
CN103309684A (zh) | 动态加载应用的方法及装置 | |
CN102023885A (zh) | 一种存储Java卡运行时环境字节码的方法及系统 | |
CN104375849A (zh) | 加载内核的方法及装置 | |
CN102385509A (zh) | 一种图形化嵌入式开发方法和平台 | |
CN101668283A (zh) | 一种手机嵌入式系统中动态加载的方法 | |
CN104731622B (zh) | 一种应用程序的加载方法、装置和移动终端 | |
CN102566980A (zh) | 可扩展的数据并行语义 | |
CN104090765A (zh) | 一种手机游戏转网页游戏的方法及装置 | |
CN103176899A (zh) | 手机模拟器及在宿主机上模拟手机功能的方法 | |
CN101937356A (zh) | 一种编译WebKit浏览器的方法及装置 | |
CN106020921A (zh) | 外设应用程序的移植方法及其系统 | |
CN101505339B (zh) | 从电脑直接部署手机应用程序到手机上的实现方法 | |
CN108829465B (zh) | 一种基于直接读写flash的本地动态加载系统及方法 | |
CN102364433B (zh) | 在ARM处理器上实现Wine构建工具移植的方法 | |
CN103377079A (zh) | 终端及其应用运行装置和方法,运行应用程序的方法 | |
CN102760075A (zh) | 一种实现智能卡应用部署的方法及系统 | |
CN102004662A (zh) | 嵌入式可裁剪式虚拟机 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |