CN101702130B - 一种移动终端加载共享函数库的方法和装置 - Google Patents
一种移动终端加载共享函数库的方法和装置 Download PDFInfo
- Publication number
- CN101702130B CN101702130B CN 200910212394 CN200910212394A CN101702130B CN 101702130 B CN101702130 B CN 101702130B CN 200910212394 CN200910212394 CN 200910212394 CN 200910212394 A CN200910212394 A CN 200910212394A CN 101702130 B CN101702130 B CN 101702130B
- Authority
- CN
- China
- Prior art keywords
- file
- sharing function
- module
- load
- function library
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明提出了一种移动终端加载共享函数库的方法和装置。通过将应用程序D、导入接口头文件B和源文件C一起编译成预定格式的文件E,并将共享函数库文件A与文件E存储在外部存储中,可以将相对通用的模块独立编译成共享函数库。本发明可以缩减应用程序的大小,降低运行时消耗的内存空间,避免不必要的资源浪费,尤其适用于嵌入式的环境。另外,在修改程序时,也不必编译所有的模块,提高了程序的编译速度。
Description
技术领域
本发明涉及应用程序的运行,特别是涉及移动终端加载共享函数库的方法和装置。
背景技术
移动终端应用程序的可下载是指,移动终端能支持将某些独立的可选择可替换的软件模块并且将其下载到移动终端中以实现不同的扩展功能。目前这种功能可扩展性已被看作“智能手机”的重要功能之一。本发明所称的移动终端是指手机、个人数字助理(PDA,Personal Digital Assistant)等具有无线通讯功能的小型手持式移动通信设备。
通过将移动终端外部存储(譬如手机扩展卡)上的代码和数据拷入内存中运行解决了非智能手机不能动态加载运行应用程序的限制。但是应用程序之间彼此独立,而每个应用又由许多模块组成,各模块分别完成相对独立的功能,它们彼此协作来完成整个软件***的工作。其中可能存在一些模块的功能较为通用,在不同的应用中都会被使用。如果将所有模块的源代码都静态编译到应用程序中,会有两个问题:一是增加了应用程序的大小,不仅占用更多的磁盘空间,运行时也会消耗较大的内存空间,造成***资源的浪费;其二,每次修改程序时都必须编译所有源代码,增加了编译过程的复杂性。
发明内容
针对现有技术的上述不足,本发明的一个目的是提供一种移动终端加载共享函数库的方法,可以将相对通用的模块独立编译成共享函数库。
本发明移动终端加载共享函数库的方法,包括:
步骤1:将共享函数库编译成预定格式的共享函数库文件A,所述共享函数库至少提供导入接口头文件B;
步骤2:将所述导入接口头文件B解析成相应的源文件C;
步骤3:将应用程序D、导入接口头文件B和源文件C一起编译成预定格式的文件E;
步骤4:将所述共享函数库文件A与所述文件E存储在所述移动终端外部存储装置中;
步骤5:从所述移动终端外部存储装置中加载运行所述文件E,并加载所述共享函数库文件A。
作为上述技术方案的优选,所述步骤5具体为:
步骤51:从所述移动终端外部存储装置中加载运行所述文件E;
步骤52:判断是否需要调用所述共享函数库文件A,若是,从所述移动终端外部存储装置中加载所述共享函数库文件A;若否,直接运行所述应用程序D。
作为上述技术方案的优选,该方法还包括:
步骤6:判断是否需要卸载所述共享函数库A,若是,则卸载所述共享函数库A,若否,则运行应用程序D。
作为上述技术方案的优选,所述共享函数库文件A还编译成提供共享函数库入口处所创建的导出函数的名称和/或地址映射表的格式。
作为上述技术方案的优选,所述源文件C用于负责完成程序跳转和上下文处理。
本发明的另一个目的是提供一种移动终端加载共享函数库的装置,包括:
第一编译模块,用于将共享函数库编译成预定格式的共享函数库文件A;
解析模块,用于将所述第一编译模块提供的导入接口头文件B解析成相应的源文件C;
第二编译模块,用于将应用程序D、第一编译模块提供的导入接口头文件B和解析模块提供的源文件C一起编译成文件E;
存储模块,用于将所述第一编译模块的共享函数库文件A与所述第二编译模块编译的文件E存储在所述移动终端外部存储装置中;
加载及运行模块,用于从所述移动终端外部存储装置中加载运行所述编译模块的文件E,并加载所述第一编译模块编译的共享函数库文件A。
作为上述技术方案的优选,所述加载及运行模块具体包括:
第一加载模块,用于从所述移动终端外部存储装置中加载运行所述第二编译模块编译的文件E;
第一判断模块,用于判断是否需要调用所述共享函数库文件A;
第二加载模块,用于从所述移动终端外部存储装置中加载所述共享函数库A。
作为上述技术方案的优选,该装置还包括:
第二判断模块,用于判断是否需要卸载所述共享函数库A;
卸载模块,用于当所述第二判断模块的结果为是时,卸载所述共享函数库A。
作为上述技术方案的优选,所述第一编译模块还将共享函数库文件A编译成提供共享函数库入口处所创建的导出函数的名称和/或地址映射表的格式。
作为上述技术方案的优选,所述解析模块中的源文件C用于负责完成程序跳转和上下文处理。
本发明构建共享函数库的方法和装置,将相对通用的模块独立编译成共享函数库,应用程序在运行时可根据需要加载相应的共享函数库。因此可以缩减应用程序的大小,降低运行时消耗的内存空间,避免不必要的资源浪费,尤其适用于嵌入式的环境。另外,在修改程序时,也不必编译所有的模块,提高了程序的编译速度。
附图说明
图1是本发明加载共享函数库方法的一优选实施例的流程图;
图2是本发明实施例的单元关系图;
图3是本发明加载共享函数库方法的另一优选实施例的流程图;
图4是本发明加载共享函数库装置的一优选实施例的结构简图;
图5是本发明加载共享函数库装置的另一优选实施例的结构简图。
具体实施方式
下面结合附图,对本发明的具体实施方式作进一步的详细说明。对于所属技术领域的技术人员而言,从对本发明的详细说明中,本发明的上述和其他目的、特征和优点将显而易见。
实施例1
本发明移动终端加载共享函数库方法的优选实施例的流程图如图1所示,其包括:
步骤1:将共享函数库编译成预定格式的共享函数库文件A,所述共享函数库至少提供导入接口头文件B;
步骤2:将所述导入接口头文件B解析成相应的源文件C;
步骤3:将应用程序D、导入接口头文件B和源文件C一起编译成预定格式的文件E;
步骤4:将所述共享函数库文件A与所述文件E存储在所述移动终端外部存储装置中;
步骤5:从所述移动终端外部存储装置中加载运行所述文件E,并加载所述共享函数库文件A。
可以通过图2所示的单元关系图来实现本发明共享函数库的编译。
实施例2
本发明加载共享函数库方法的另一优选实施例的流程图如图3所示,其包括:
步骤201:先制作共享函数库,并编译成预定格式的共享函数库文件A;
其中,预定格式的共享函数库文件A要提供所导出的函数的具体体现、与导出函数相对应的提供给应用程序使用的导入接口头文件B和共享函数库入口处所创建的导出函数的名称与地址映射表。
步骤202:使用文件生成工具将共享函数库提供的导入接口头文件B解析生成相应的源文件C;
其中,源文件C主要负责完成程序跳转和上下文处理。
步骤203:应用程序D、导入接口头文件B和步骤202中生成的相应的源文件C一起编译成预定格式的文件E;
步骤204:将共享函数库A与步骤203中应用程序编译好的文件E放入移动终端外部存储(譬如手机扩展卡)中;
步骤205:用户启动加载应用程序到移动终端;
步骤206:装载运行步骤203中编译好的文件;
步骤207:运行过程中判断是否需要调用共享函数库A,需要调用则执行步骤208;不需要调用共享函数库则运行应用程序(步骤211)即可;
步骤208:装载共享函数库A;
步骤209:判断是否需要卸载共享函数库A,需要卸载则卸载共享函数库A(步骤210),不需要卸载则继续运行应用程序(步骤211);
步骤210:卸载共享函数库A;
步骤211:继续运行应用程序。
实施例3
本发明加载共享函数库装置的优选实施例的结构简图如图4所示,其包括:
第一编译模块31,用于将共享函数库编译成预定格式的共享函数库文件A;
解析模块32,用于将所述第一编译模块提供的导入接口头文件B解析成相应的源文件C;
第二编译模块33,用于将应用程序D、第一编译模块提供的导入接口头文件B和解析模块提供的源文件C一起编译成文件E;
存储模块34,用于将所述第一编译模块的共享函数库文件A与所述第二编译模块编译的文件E存储在所述移动终端外部存储装置中;
加载及运行模块35,用于从所述移动终端外部存储装置中加载运行所述编译模块的文件E,并加载所述第一编译模块编译的共享函数库文件A。
实施例4
本发明加载共享函数库装置的另一优选实施例的结构简图如图5所示,其包括相互关联的编译单元4A和加载及运行单元4B。
其中,编译单元4A具体包括:
第一编译模块41,用于将共享函数库编译成预定格式的共享函数库文件A;
解析模块42,用于将所述第一编译模块提供的导入接口头文件B解析成相应的源文件C;
第二编译模块43,用于将应用程序D、第一编译模块提供的导入接口头文件B和解析模块提供的源文件C一起编译成文件E;
存储模块44,用于将所述第一编译模块的共享函数库文件A与所述第二编译模块编译的文件E存储在所述移动终端外部存储装置中。
加载及运行单元4B具体包括:
第一加载模块45,用于从所述移动终端外部存储装置中加载运行所述第二编译模块编译的文件E;
第一判断模块46,用于判断是否需要调用所述共享函数库文件A;
第二加载模块47,用于从所述移动终端外部存储装置中加载所述共享函数库A;
第二判断模块48,用于判断是否需要卸载所述共享函数库A;
卸载模块49,用于当所述第二判断模块的结果为是时,卸载所述共享函数库A。
本发明移动终端加载共享函数库的方法和装置,将相对通用的模块独立编译成共享函数库,应用程序在运行时可根据需要加载相应的共享函数库。因此可以缩减应用程序的大小,降低运行时消耗的内存空间,避免不必要的资源浪费,尤其适用于嵌入式的环境。另外,在修改程序时,也不必编译所有的模块,提高了程序的编译速度。
应当理解,本发明虽然已通过以上实施例及其附图而清楚说明,然而在不背离本发明精神及其实质的情况下,所属技术领域的技术人员当可根据本发明作出各种相应的变化和修正,但这些相应的变化和修正都应属于本发明的权利要求的保护范围。
Claims (6)
1.一种移动终端加载共享函数库的方法,其特征在于,包括:
步骤1:将共享函数库编译成预定格式的共享函数库文件A,其中,预定格式的共享函数库文件A提供所导出的函数的具体体现、与导出函数相对应的提供给应用程序使用的导入接口头文件B和共享函数库入口处所创建的导出函数的名称与地址映射表;
步骤2:将所述导入接口头文件B解析成相应的源文件C,
其中,源文件C用于负责完成程序跳转和上下文处理;
步骤3:将应用程序D、导入接口头文件B和源文件C一起编译成预定格式的文件E;
步骤4:将所述共享函数库文件A与所述文件E存储在所述移动终端外部存储装置中;
步骤5:从所述移动终端外部存储装置中加载运行所述文件E,并加载所述共享函数库文件A。
2.如权利要求1所述的方法,其特征在于,所述步骤5具体为:
步骤51:用户启动加载应用程序D到移动终端;
步骤52:从所述移动终端外部存储装置中加载运行所述文件E;
步骤53:判断是否需要调用所述共享函数库文件A,若是,从所述移动终端外部存储装置中加载所述共享函数库文件A;若否,直接运行所述应用程序D。
3.如权利要求2所述的方法,其特征在于,还包括:
步骤6:判断是否需要卸载所述共享函数库A,若是,则卸载所述共享函数库A,若否,则运行应用程序D。
4.一种移动终端加载共享函数库的装置,其特征在于,包括:
第一编译模块,用于将共享函数库编译成预定格式的共享函数库文件A,
其中,预定格式的共享函数库文件A提供所导出的函数的具体体现、与导出函数相对应的提供给应用程序使用的导入接口头文件B和共享函数库入口处所创建的导出函数的名称与地址映射表;
解析模块,用于将所述第一编译模块提供的导入接口头文件B解析成相应的源文件C,
其中,源文件C用于负责完成程序跳转和上下文处理;
第二编译模块,用于将应用程序D、第一编译模块提供的导入接口头文件B和解析模块提供的源文件C一起编译成文件E;
存储模块,用于将所述第一编译模块的共享函数库文件A与所述第二编译模块编译的文件E存储在所述移动终端外部存储装置中;
加载及运行模块,用于从所述移动终端外部存储装置中加载运行所述编译模块的文件E,并加载所述第一编译模块编译的共享函数库文件A。
5.如权利要求4所述的装置,其特征在于,所述加载及运行模块具体包括:
第一加载模块,用于启动加载应用程序D到移动终端;
第二加载模块,用于从所述移动终端外部存储装置中加载运行所述第二编译模块编译的文件E;
第一判断模块,用于判断是否需要调用所述共享函数库文件A;
第三加载模块,用于当所述第一判断模块的结果为是时,从所述移动终端外部存储装置中加载所述共享函数库A;
第四加载模块,用于当所述第一判断模块的结果为否时,直接运行所述应用程序D。
6.如权利要求4所述的装置,其特征在于,还包括:
第二判断模块,用于判断是否需要卸载所述共享函数库A;
卸载模块,用于当所述第二判断模块的结果为是时,卸载所述共享函数库A;
第五加载模块,用于当所述第二判断模块的结果为否时,运行所述应用程序D。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910212394 CN101702130B (zh) | 2009-11-12 | 2009-11-12 | 一种移动终端加载共享函数库的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910212394 CN101702130B (zh) | 2009-11-12 | 2009-11-12 | 一种移动终端加载共享函数库的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101702130A CN101702130A (zh) | 2010-05-05 |
CN101702130B true CN101702130B (zh) | 2012-12-26 |
Family
ID=42157047
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200910212394 Expired - Fee Related CN101702130B (zh) | 2009-11-12 | 2009-11-12 | 一种移动终端加载共享函数库的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101702130B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102147743A (zh) * | 2011-03-28 | 2011-08-10 | 博视联(苏州)信息科技有限公司 | 加快嵌入式***应用程序启动速度的方法 |
CN103186730B (zh) * | 2013-03-26 | 2016-05-18 | 北京深思数盾科技股份有限公司 | 保护.net软件安全的方法和设备 |
CN103246848B (zh) * | 2013-03-26 | 2016-05-18 | 北京深思数盾科技股份有限公司 | 保护软件安全的方法和设备 |
CN103729224B (zh) * | 2013-12-30 | 2017-06-16 | 广州华多网络科技有限公司 | 基于开放平台的应用加载方法及装置 |
US9672020B2 (en) * | 2014-09-19 | 2017-06-06 | Microsoft Technology Licensing, Llc | Selectively loading precompiled header(s) and/or portion(s) thereof |
CN107292132B (zh) * | 2016-03-30 | 2023-03-14 | 北京娜迦信息科技发展有限公司 | 用于安卓***的共享对象文件的加载方法与装置 |
CN107085514B (zh) * | 2017-03-06 | 2021-02-19 | 北京安博通科技股份有限公司 | 共享库升级方法及装置 |
CN107316245A (zh) * | 2017-06-19 | 2017-11-03 | 泰康保险集团股份有限公司 | 费用理算方法及*** |
CN109739824B (zh) * | 2018-12-28 | 2021-05-04 | 斑马网络技术有限公司 | 日志获取方法及设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1900909A (zh) * | 2006-07-18 | 2007-01-24 | 华为技术有限公司 | 一种嵌入式操作***加载逻辑文件的方法和嵌入式*** |
CN1924805A (zh) * | 2005-09-02 | 2007-03-07 | 腾讯科技(深圳)有限公司 | 在无线二进制运行环境平台实现动态链接库方法 |
CN101013368A (zh) * | 2007-02-02 | 2007-08-08 | 浙江大学 | 一种嵌入式***开发平台图形库的性能优化设计方法 |
CN101470619A (zh) * | 2007-12-29 | 2009-07-01 | 安凯(广州)软件技术有限公司 | 一种基于微核操作***的应用程序动态加载方法 |
-
2009
- 2009-11-12 CN CN 200910212394 patent/CN101702130B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1924805A (zh) * | 2005-09-02 | 2007-03-07 | 腾讯科技(深圳)有限公司 | 在无线二进制运行环境平台实现动态链接库方法 |
CN1900909A (zh) * | 2006-07-18 | 2007-01-24 | 华为技术有限公司 | 一种嵌入式操作***加载逻辑文件的方法和嵌入式*** |
CN101013368A (zh) * | 2007-02-02 | 2007-08-08 | 浙江大学 | 一种嵌入式***开发平台图形库的性能优化设计方法 |
CN101470619A (zh) * | 2007-12-29 | 2009-07-01 | 安凯(广州)软件技术有限公司 | 一种基于微核操作***的应用程序动态加载方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101702130A (zh) | 2010-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101702130B (zh) | 一种移动终端加载共享函数库的方法和装置 | |
CN100378661C (zh) | 用于双向通信和执行动态指令集的***和方法 | |
US20100058087A1 (en) | Method and system for power management for a handheld mobile electronic device | |
CN101833464A (zh) | 一种移动终端分段加载应用程序的方法及装置 | |
CN103729210B (zh) | 一种实现一个刷机包支持多种制式智能终端的方法及装置 | |
WO2021120327A1 (zh) | 一种固件更新方法、装置、耳机及计算机可读存储介质 | |
CN101706725A (zh) | 一种可重定位程序的加载及调试方法及*** | |
CN103902265A (zh) | 一种应用实现方法及相关装置 | |
CN102222006A (zh) | 移动Widget用户界面的实现方法及装置 | |
CN104615414A (zh) | 一种渠道包定制方法及装置 | |
CN101673204A (zh) | 一种基于arm的手机应用程序动态加载方法 | |
CN109933381B (zh) | 一种内核的加载方法及装置 | |
CN101840345A (zh) | 一种配置参数的识别方法、***及嵌入式设备 | |
CN104731622B (zh) | 一种应用程序的加载方法、装置和移动终端 | |
CN101458629A (zh) | 嵌入式实时操作***中实现动态加载的方法和装置 | |
CN114185491B (zh) | 一种分区文件的下载方法、装置、存储介质及计算机设备 | |
CN102323887A (zh) | 基于浏览器引擎的动态加载Widget的方法及移动终端 | |
CN101894028A (zh) | Linux内核镜像数据支持多种CPU的实现方法及装置 | |
CN101937356A (zh) | 一种编译WebKit浏览器的方法及装置 | |
CN105094878A (zh) | 一种集成***库文件的方法和装置 | |
CN107423291B (zh) | 一种数据翻译方法以及客户端设备 | |
US7574705B2 (en) | Method and apparatus for efficiently resolving symbolic references in a virtual machine | |
CN102323890B (zh) | 用于无线终端的网页处理方法、装置及*** | |
CN102270124A (zh) | 一种实现嵌入式插件的装置和嵌入式平台*** | |
CN101714120A (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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20121226 Termination date: 20131112 |