一种用于Lua代码嵌入的编译方法、装置、终端及存储介质制造方法及图纸

技术编号:33201742 阅读:24 留言:0更新日期:2022-04-24 00:39
本发明专利技术揭示了一种用于Lua代码嵌入的编译方法、装置、终端及存储介质。本发明专利技术能够高效地将Lua代码嵌入各类跨平台应用程序中,且在方法的执行过程中,lua代码的嵌入并不会使得应用程序的程序包中文件个数增加,因为也就避免了系统了对程序读写文件的权限限制。同时,基于本发明专利技术的方法可以方便地实现自动化编译流程,降低企业的开发成本、提升企业的开发效率。提升企业的开发效率。提升企业的开发效率。

【技术实现步骤摘要】
一种用于Lua代码嵌入的编译方法、装置、终端及存储介质


[0001]本专利技术涉及一种用于Lua代码嵌入的编译方案,具体而言,涉及一种用于将Lua代码嵌入跨平台应用程序的编译方法、装置、终端及存储介质,属于计算机程序编译领域。

技术介绍

[0002]Lua 是一种小巧的嵌入式脚本语言,其设计目的是为了通过灵活嵌入应用程序中从而为应用程序提供灵活的扩展和定制功能。Lua由标准C语言编写而成,几乎在所有操作系统和平台上都可以编译、运行。由于Lua所具备的速度快、拓展性强等优点,使得其在各类应用程序中被广泛使用。
[0003]在实际的项目开发过程中,有时会遇到需要将用C语言开发的应用程序在不同厂家的设备上运行的情况。由于Lua所具备的上述优点,技术人员通常的应对方式是当程序启动后,读取 Lua 代码文件并加载执行。
[0004]但是在将应用程序集成到设备的过程中,各厂家的要求不尽相同,有些厂家会对设备内程序包中的文件个数和权限做限制。此时如果要让(使用了Lua代码的)应用程序顺利的在这类设备上正常集成运行,那么必然需要技术人员花费时间和厂家沟通并进行适配。而在现实环境中,各厂家都会有自己的一套工具链,如果类似需要集成适配的设备较多的话,那么必将极大地增加应用程序的开发成本。
[0005]综上所述,如何在现有技术的基础上提出一种全新的、用于将Lua代码嵌入跨平台应用程序的编译方案,以解决现有技术中所存在的不足和缺陷,也就成为了本领域内技术人员亟待解决的问题。

技术实现思路

[0006]鉴于现有技术存在上述缺陷,本专利技术提出了一种用于将Lua代码嵌入跨平台应用程序的编译方法、装置、终端及存储介质,具体如下。
[0007]一种用于Lua代码嵌入的编译方法,包括:依据获取的第一ELF目标文件的文件格式和体系结构,将Lua代码文件转化为第二ELF目标文件,分别获取代表所述第二ELF目标文件起始地址和结束地址的符号变量;自动生成一个C语言文件并实现一个函数,所述函数的存储区内存储有所述Lua代码文件内容,在应用程序需要加载所述Lua代码的程序代码前调用所述函数,将所述C语言文件编译为第三ELF目标文件;将所述第二ELF目标文件与所述第三ELF目标文件链接成应用程序,完成所述Lua代码文件的嵌入。
[0008]优选地,所述依据获取的第一ELF目标文件的格式和体系结构,将Lua代码文件转化为第二ELF目标文件,分别获取代表所述第二ELF目标文件起始地址和结束地址的符号变量,包括:任意选取一个应用程序编译过程中产生的ELF文件作为第一ELF目标文件;
获取所述第一ELF目标文件的文件格式和体系结构;将Lua代码文件转化为具有所述第一ELF目标文件的文件格式和体系结构的第二ELF目标文件,所述Lua代码文件的内容存在于所述第二ELF目标文件的数据段中、将该数据段标记为DS;查看所述第二ELF目标文件的符号表,获取其中的两个符号变量,一个符号变量代表数据段DS的起始地址、记为 pStartAddr;一个符号变量代表数据段DS的结束地址、记为pEndAddr。
[0009]优选地,所述自动生成一个C语言文件并实现一个函数,所述函数的存储区内存储有所述Lua代码文件内容,在应用程序需要加载所述Lua代码的程序代码前调用所述函数,将所述C语言文件编译为第三ELF目标文件,包括:自动生成一个C语言文件,在所述C语言文件中实现一个函数,所述函数的功能是依据pStartAddr和pEndAddr计算并返回一段存储区,所述存储区内存放有所述Lua代码文件内容;在应用程序需要加载所述Lua代码的程序代码前,调用所述函数所返回的所述存储区;将所述C语言文件编译为第三ELF目标文件。
[0010]一种用于Lua代码嵌入的编译装置,包括:目标文件准备模块,用于依据获取的第一ELF目标文件的文件格式和体系结构,将Lua代码文件转化为第二ELF目标文件,分别获取代表所述第二ELF目标文件起始地址和结束地址的符号变量;目标文件编译模块,用于自动生成一个C语言文件并实现一个函数,所述函数的存储区内存储有所述Lua代码文件内容,在应用程序需要加载所述Lua代码的程序代码前调用所述函数,将所述C语言文件编译为第三ELF目标文件;代码嵌入模块,用于将所述第二ELF目标文件与所述第三ELF目标文件链接成应用程序,完成所述Lua代码文件的嵌入。
[0011]优选地,所述目标文件准备模块,包括:第一目标文件选取单元,用于任意选取一个应用程序编译过程中产生的ELF文件作为第一ELF目标文件;第一目标文件处理单元,用于获取所述第一ELF目标文件的文件格式和体系结构;第二目标文件生成单元,用于将Lua代码文件转化为具有所述第一ELF目标文件的文件格式和体系结构的第二ELF目标文件,所述Lua代码文件的内容存在于所述第二ELF目标文件的数据段中、将该数据段标记为DS;第二目标文件处理单元,用于查看所述第二ELF目标文件的符号表,获取其中的两个符号变量,一个符号变量代表数据段DS的起始地址、记为 pStartAddr;一个符号变量代表数据段DS的结束地址、记为pEndAddr。
[0012]优选地,所述目标文件编译模块,包括:C语言文件生成单元,用于自动生成一个C语言文件,在所述C语言文件中实现一个函数,所述函数的功能是依据pStartAddr和pEndAddr计算并返回一段存储区,所述存储区内存放有所述Lua代码文件内容;
函数调用单元,用于在应用程序需要加载所述Lua代码的程序代码前,调用所述函数所返回的所述存储区;第三目标文件编译单元,用于将所述C语言文件编译为第三ELF目标文件。
[0013]一种终端,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上所述用于Lua代码嵌入的编译方法中的步骤。
[0014]一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行所述计算机程序时实现如上所述用于Lua代码嵌入的编译方法中的步骤。
[0015]本专利技术的优点主要体现在以下几个方面:本专利技术的一种用于Lua代码嵌入的编译方法,能够高效地将Lua代码嵌入各类跨平台应用程序中,且在方法的执行过程中,lua代码的嵌入并不会使得应用程序的程序包中文件个数增加,因为也就避免了系统了对程序读写文件的权限限制。同时,基于本专利技术的方法可以方便地实现自动化编译流程,降低企业的开发成本、提升企业的开发效率。
[0016]与方法相对应的,本专利技术的一种用于Lua代码嵌入的编译装置、终端及存储介质,能够以系统化、标准化的处理流程,高效、准确地将Lua代码嵌入跨平台应用程序中,方案整体的适配性、通用性强。
[0017]本专利技术也为同领域内的其他相关问题提供了参考,可以以此为依据进行拓展延伸,运用于同领域内其他与Lua代码嵌入相关的技术方案中,具有十分广阔的应用前景。
[0018]以下便结合实施例附图,对本专利技术的具体实施本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种用于Lua代码嵌入的编译方法,其特征在于,包括:依据获取的第一ELF目标文件的文件格式和体系结构,将Lua代码文件转化为第二ELF目标文件,分别获取代表所述第二ELF目标文件起始地址和结束地址的符号变量;自动生成一个C语言文件并实现一个函数,所述函数的存储区内存储有所述Lua代码文件内容,在应用程序需要加载所述Lua代码的程序代码前调用所述函数,将所述C语言文件编译为第三ELF目标文件;将所述第二ELF目标文件与所述第三ELF目标文件链接成应用程序,完成所述Lua代码文件的嵌入。2.根据权利要求1中所述用于Lua代码嵌入的编译方法,其特征在于,所述依据获取的第一ELF目标文件的格式和体系结构,将Lua代码文件转化为第二ELF目标文件,分别获取代表所述第二ELF目标文件起始地址和结束地址的符号变量,包括:任意选取一个应用程序编译过程中产生的ELF文件作为第一ELF目标文件;获取所述第一ELF目标文件的文件格式和体系结构;将Lua代码文件转化为具有所述第一ELF目标文件的文件格式和体系结构的第二ELF目标文件,所述Lua代码文件的内容存在于所述第二ELF目标文件的数据段中、将该数据段标记为DS;查看所述第二ELF目标文件的符号表,获取其中的两个符号变量,一个符号变量代表数据段DS的起始地址、记为 pStartAddr;一个符号变量代表数据段DS的结束地址、记为pEndAddr。3.根据权利要求1中所述用于Lua代码嵌入的编译方法,其特征在于,所述自动生成一个C语言文件并实现一个函数,所述函数的存储区内存储有所述Lua代码文件内容,在应用程序需要加载所述Lua代码的程序代码前调用所述函数,将所述C语言文件编译为第三ELF目标文件,包括:自动生成一个C语言文件,在所述C语言文件中实现一个函数,所述函数的功能是依据pStartAddr和pEndAddr计算并返回一段存储区,所述存储区内存放有所述Lua代码文件内容;在应用程序需要加载所述Lua代码的程序代码前,调用所述函数所返回的所述存储区;将所述C语言文件编译为第三ELF目标文件。4.一种用于Lua代码嵌入的编译装置,其特征在于,包括:目标文件准备模块,用于依据获取的第一ELF目标文件的文件格式和体系结构,将Lua代码文件转化为第二ELF目标文件,分别...

【专利技术属性】
技术研发人员:高祥
申请(专利权)人:苏州迈科网络安全技术股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1