CN116860315A - 一种数据处理方法、装置、可读存储介质及电子设备 - Google Patents
一种数据处理方法、装置、可读存储介质及电子设备 Download PDFInfo
- Publication number
- CN116860315A CN116860315A CN202310644512.0A CN202310644512A CN116860315A CN 116860315 A CN116860315 A CN 116860315A CN 202310644512 A CN202310644512 A CN 202310644512A CN 116860315 A CN116860315 A CN 116860315A
- Authority
- CN
- China
- Prior art keywords
- target
- data
- source code
- file
- execution program
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/53—Decompilation; Disassembly
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/74—Reverse engineering; Extracting design information from source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种数据处理方法、装置、计算机可读存储介质及电子设备,该方法包括:获取当前编译环境对应的环境数据;基于所述环境数据,确定配置文件;基于目标函数和所述配置文件,生成目标源码;将所述目标源码链接到目标动态库,以使得基于目标版本查询工具和所述目标源码,得到所述目标动态库对应的第一版本信息;将所述目标源码链接到目标执行程序,以使得在所述目标执行程序执行时,基于所述目标源码,得到所述目标执行程序对应的第二版本信息。本发明提供的技术方案,为目标动态库或目标执行程序注入版本信息,以使得在有需要时,即获取到准确的版本信息,为维护和开发过程提供便利。
Description
技术领域
本发明涉及版本管理技术领域,且更具体地,涉及一种数据处理方法、装置、可读存储介质及电子设备。
背景技术
随着互联网技术的快速发展,各种数据更新速度越来越快,因此对数据进行版本管理至关重要。现有的版本管理工具(如git,svn等线上代码版本管理工具)主要用于维护开发过程中代码的版本,可根据版本号回溯并复现当时的代码情况。但在涉及到工程编译的动态库或者可执行程序时,无法实现查看动态库或者可执行程序的版本信息,不利于动态库或者可执行程序的维护开发。
发明内容
本发明提供了一种数据处理方法、装置、计算机可读存储介质及电子设备,以解决现有技术中无法实现查看动态库或者可执行程序的版本信息的技术问题。
根据本发明的第一方面,提供了一种数据处理方法,包括:
获取当前编译环境对应的环境数据;
基于所述环境数据,确定配置文件;
基于目标函数和所述配置文件,生成目标源码;
将所述目标源码链接到目标动态库,以使得基于目标版本查询工具和所述目标源码,得到所述目标动态库对应的第一版本信息;将所述目标源码链接到目标执行程序,以使得在所述目标执行程序执行时,基于所述目标源码,得到所述目标执行程序对应的第二版本信息。
可选地,所述方法还包括:
建立目标项目;
在所述目标项目对应的文件夹中添加第一文件和第二文件;所述第一文件用于添加外部依赖库,所述第二文件用于下载数据,下载的数据包括:配置模板、编译工具、目标版本查询工具和数据注入工具;
所述基于所述环境数据,确定配置文件;
将所述环境数据注入所述配置模板,生成所述配置文件;
所述将所述目标源码链接到目标动态库,包括:
利用所述编译工具对所述目标源码进行编译处理,并将编译后的数据链接到目标动态库;
所述将所述目标源码链接到目标执行程序,包括:
利用所述编译工具对所述目标源码进行编译处理,并将编译后的数据基于所述数据注入工具链接到所述目标执行程序。
可选地,所述建立目标项目,包括:
基于目标软件建立所述目标项目,所述目标软件包括cmake软件。
可选地,所述方法还包括:
在所述cmake软件对应的CMakeLists.txt中添加所述第二文件的引用;
在增加所述目标动态库后,添加第一执行语句;所述第一执行语句用于指示执行所述获取当前编译环境对应的环境数据;基于所述环境数据,确定配置文件;基于目标函数和所述配置文件,生成目标源码;将所述目标源码链接到目标动态库的步骤;
在增加所述目标执行程序后,添加第二执行语句,所述第二执行语句用于指示执行所述获取当前编译环境对应的环境数据;基于所述环境数据,确定配置文件;基于目标函数和所述配置文件,生成目标源码;将所述目标源码链接到目标执行程序的步骤。
根据本发明的第二方面,提供了一种数据处理装置,包括:
数据获取模块,用于获取当前编译环境对应的环境数据;
文件确定模块,用于基于所述环境数据,确定配置文件;
源码生成模块,用于基于目标函数和所述配置文件,生成目标源码;
源码链接模块,用于将所述目标源码链接到目标动态库,以使得基于目标版本查询工具和所述目标源码,得到所述目标动态库对应的第一版本信息;将所述目标源码链接到目标执行程序,以使得在所述目标执行程序执行时,基于所述目标源码,得到所述目标执行程序对应的第二版本信息。
可选地,所述装置还包括:
项目建立模块,用于建立目标项目;在所述目标项目对应的文件夹中添加第一文件和第二文件;所述第一文件用于添加外部依赖库,所述第二文件用于下载数据,下载的数据包括:配置模板、编译工具、目标版本查询工具和数据注入工具;
所述文件确定模块,进一步用于将所述环境数据注入所述配置模板,生成所述配置文件;
所述源码链接模块,进一步用于利用所述编译工具对所述目标源码进行编译处理,并将编译后的数据链接到目标动态库;利用所述编译工具对所述目标源码进行编译处理,并将编译后的数据基于所述数据注入工具链接到所述目标执行程序。
可选地,所述项目建立模块,进一步用于基于目标软件建立所述目标项目,所述目标软件包括cmake软件。
可选地,所述装置还包括:
数据处理模块,用于在所述cmake软件对应的CMakeLists.txt中添加所述第二文件的引用;在增加所述目标动态库后,添加第一执行语句;所述第一执行语句用于触发所述数据获取模块;在增加所述目标执行程序后,添加第二执行语句,所述第二执行语句用于触发所述数据获取模块。
根据本发明的第三方面,提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行上述数据处理方法。
根据本发明的第四方面,提供了一种电子设备,所述电子设备包括:
处理器;
用于存储所述处理器可执行指令的存储器;
所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现上述的数据处理方法。
与现有技术相比,本发明提供的数据处理方法、装置、计算机可读存储介质及电子设备,至少包括以下有益效果:
本发明的技术方案获取当前编译环境对应的环境数据,该环境数据包括当前编译环境下的各种环境信息,在不同的时刻,该环境数据不同,因此该环境数据可用于指示数据的版本情况。根据获取的环境数据,确定出配置文件,该配置文件可生成源码。进而调用目标函数,根据该配置文件,生成目标源码。进一步将目标源码链接到目标动态库或目标执行程序,为目标动态库或目标执行程序注入环境数据。从而可以通过目标版本查询工具和链接到目标数据库的目标源码,得到目标动态库对应的第一版本信息;或在执行该目标执行程序时,根据目标源码,得到目标执行程序对应的第二版本信息。也就是说在本发明提供的技术方案中,为目标动态库、目标执行程序快速地注入准确的可用于指示版本情况的环境数据后,则可以在后续有需要时查看目标动态库的第一版本信息或目标执行程序的第二版本信息,为数据维护和数据开发提供便利。
附图说明
为了更清楚地说明本发明的技术方案,下面将对本发明的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一示例性实施例提供的数据处理方法的流程示意图一;
图2是本发明一示例性实施例提供的数据处理方法的流程示意图二;
图3是本发明一示例性实施例提供的数据处理装置的结构示意图;
图4是本发明一示例性实施例提供的电子设备的结构图。
具体实施方式
下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有创造性劳动前提下所获得的所有其他实施例,都属于本实施例保护的范围。
示例性方法
图1是本发明一示例性实施例提供的数据处理方法的流程示意图,至少包括如下步骤:
步骤10,获取当前编译环境对应的环境数据。
其中,当前编译环境是指当前时刻对待编译数据进行编译的环境,环境数据是当前编译环境的具体参数值。示例性地,环境数据包括但不限于当前代码的版本、编译用户、编译时间、当前使用的编译器版本、当前操作系统等。具体地,因为在不同的时刻,该环境数据不同,因此该环境数据可用于指示数据的版本情况。
步骤20,基于所述环境数据,确定配置文件。
其中,配置文件可用于生成源码。
具体地,将获取到的环境数据注入到配置模板中,得到该环境数据对应配置文件,因此该配置文件中携带有相关的环境数据。
步骤30,基于目标函数和所述配置文件,生成目标源码。
具体地,调用目标函数,获取配置文件中的环境数据,从而生成目标源码,该目标源码使用的编译语言可以是C语言,也可以是C++语言。
步骤40,将所述目标源码链接到目标动态库,以使得基于目标版本查询工具和所述目标源码,得到所述目标动态库对应的第一版本信息;将所述目标源码链接到目标执行程序,以使得在所述目标执行程序执行时,基于所述目标源码,得到所述目标执行程序对应的第二版本信息。
具体地,在得到目标源码后,将目标源码链接到目标动态库,以将目标源码对应的环境数据注入到目标动态库中,在需要查看目标动态库的第一版本信息时,即可以通过目标版本查询工具打开目标动态库,查看到目标源码对应的数据,并进行数据的输出,得到第一版本信息。
进一步地,在得到目标源码后,将目标源码链接到目标执行程序,以将目标源码对应的环境数据注入到目标执行程序中,在需要查看目标执行程序的第二版本信息时,即可以通过执行该目标执行程序,调用目标函数,得到目标源码对应的数据,并进行数据的输出,得到第二版本信息。
需要说明的是,将目标源码链接到目标动态库、目标执行程序时,并不要求同时进行链接。在一种可能的应用场景中,存在目标动态库,不存在目标执行程序,则此时将目标源码链接到目标动态库即可。在一种可能的应用场景中,存在目标执行程序,不存在目标动态库,则此时将目标源码链接到目标动态库即可。在一种可能的应用场景中,存在目标动态库,且存在目标执行程序,则此时将目标源码链接到目标动态库和目标执行程序。当然即使在存在目标动态库,且存在目标执行程序的情况下,也可以将目标源码链接到目标动态库或目标执行程序。
在上述实施例中,获取当前编译环境对应的环境数据,该环境数据包括当前编译环境下的各种环境信息,在不同的时刻,该环境数据不同,因此该环境数据可用于指示数据的版本情况。根据获取的环境数据,确定出配置文件,该配置文件可生成源码。进而调用目标函数,根据该配置文件,生成目标源码。进一步将目标源码链接到目标动态库或目标执行程序,为目标动态库或目标执行程序注入环境数据。从而可以通过目标版本查询工具和链接到目标数据库的目标源码,得到目标动态库对应的第一版本信息;执行该目标执行程序,根据目标源码,得到目标执行程序对应的第二版本信息。也就是说在为目标动态库和目标执行程序快速地注入准确的可用于指示版本情况的环境数据后,则可以在后续有需要时查看目标动态库的第一版本信息或目标执行程序的第二版本信息。通过第一版本信息和第二版本信息,能够较为容易的复现和回溯在调试和测试过程中出现的问题,为数据维护和数据开发提供便利。并且避免手动为目标动态库或目标执行文件添加版本信息,减少人为因素造成的耗时长、效率低、错误率高等不利影响,实现快速地为目标动态库或目标执行程序添加准确的版本信息。
在一实施例中,所述方法还包括:
步骤50,建立目标项目;在所述目标项目对应的文件夹中添加第一文件和第二文件;所述第一文件用于添加外部依赖库,所述第二文件用于下载数据,下载的数据包括:配置模板、编译工具、目标版本查询工具和数据注入工具。
具体地,创建目标项目,该目标项目可以为版本管理项目,在创建的目标项目对应的文件夹中添加第一文件和第二文件,第一文件和第二文件可以为从其他项目的文件夹中复制过来的内容,也可以是从链接地址下载的内容。第一文件用于添加外部依赖库,也就是在第一文件存在的情况下,可以借助该第一文件向目标项目中添加外部依赖库。第二文件用于下载数据,下载的数据即向目标项目中添加的外部依赖库,下载的数据包括但不限于配置模板、编译工具、目标版本查询工具和数据注入工具。配置模板用于生成配置文件,编译工具用于进行编译处理,目标版本查询工具用于打开动态库,数据注入工具用于向目标执行程序中注入数据。
在一种可能的实现方式中,目标软件为cmake软件。也就是说利用cmake软件建立一个目标项目,例如project(version),即创建一个版本管理项目。
进一步地,第一文件可以为CPM.cmake,CPM.cmake可以用于添加外部依赖库。第二文件可以为get_pg_cpm_functions.cmake,该文件负责从源链接下载文件至指定文件夹,并提示当前CPM函数的版本信息,即提示CURRENT_CPM_FUNCTIONS_VERSION,其中源链接可以为预先指定的链接,在该链接中至少存在以下4个文件:
pg_cpm_functions.cmake文件,即数据注入工具;
version.c.in文件,即配置模板;
version.cmake文件,即编译命令;
version tool.cpp文件,即目标版本查询工具。
具体地,可以将cmake文件夹中的CPM.cmake和get_pg_cpm_functions.cmake复制到目标工程的cmake文件夹中,即实现在目标项目对应的文件夹中添加第一文件和第二文件。
在一实施例中,在所述目标软件为cmake软件的情况下,所述方法还包括:
步骤60,在所述cmake软件对应的CMakeLists.txt中添加所述第二文件的引用。
具体地,在CMakeLists.txt中添加include指令,该指令指向第二文件,即在CMakeLists.txt中添加include(cmake/get_pg_cpm_functions.cmake)。
进一步地,在CMakeLists.txt增加目标动态库,并在增加所述目标动态库后,添加第一执行语句;所述第一执行语句用于指示执行所述获取当前编译环境对应的环境数据;基于所述环境数据,确定配置文件;基于目标函数和所述配置文件,生成目标源码;将所述目标源码链接到目标动态库的步骤。
具体地,在CMakeLists.txt添加的目标动态库可以为使用cmake软件创建的动态库,也可以为使用其他软件创建的动态库,该动态库的数量可以为至少一个。
示例性地,在CMakeLists.txt中写入add_library(version SHARED)以及target_sources(version PRIVATE src/version.cpp)语句,用于指定目标动态库,并在指定目标动态库后,在CMakeLists.txt中添加第一执行语句,第一执行语句可以为pg_target_add_version(version)。第一执行语句为在动态库中添加版本信息的关键,第一执行语句用于指示执行步骤10至步骤30,并将步骤30得到的目标源码链接到目标动态库中。在第一执行语句中存在target_name,target_name为目标动态库的名称。
进一步地,在CMakeLists.txt增加目标执行程序,并在增加所述目标执行程序后,添加第二执行语句;所述第二执行语句用于指示执行所述获取当前编译环境对应的环境数据;基于所述环境数据,确定配置文件;基于目标函数和所述配置文件,生成目标源码;将所述目标源码链接到目标执行程序的步骤。
具体地,在CMakeLists.txt添加的目标执行程序可以为使用cmake软件创建的目标执行程序,也可以为使用其他软件创建的目标执行程序,该目标执行程序的数量可以为至少一个。
示例性地,在CMakeLists.txt中写入add_executable(version_example)和target_sources(version_example PRIVATE example/version_example.cpp)语句,用于指定目标执行程序,并在指定目标执行程序后,在CMakeLists.txt中添加第二执行语句,第二执行语句可以为pg_target_add_version(version_example)。第二执行语句为在目标执行程序中添加版本信息的关键,第二执行语句用于指示执行步骤10至步骤30,并将步骤30得到的目标源码链接到目标执行程序中。在第二执行语句中存在target_name,target_name为目标执行程序的名称。然后进行工程编译安装。
示例性地,cmake软件的CMakeLists.txt文件如下所示:
cmake-minimum_required(VERSION 3.8)//指明cmake的版本要求;
project(version)//确定version项目;
include(cmake/get_pg_cpm_functions.cmake)//引用
cmake/get_pg_cpm_functions.cmake)文件;
#so//库的相关信息;
add_library(version SHARED)//增加动态库;
target_sources(version PRIVATE src/version.cpp)//动态库的相关数据;
pg_target_add_version(version)//执行语句;
#exe//可执行程序的相关信息;
add_executable(version_example)//可执行程序;
target_sources(version_example PRIVATE example/version_example.cpp)//
可执行程序的相关数据;
pg_target_add_version(version_example)//执行语句。
相应地,步骤20所述基于所述环境数据,确定配置文件;包括:
步骤201,将所述环境数据注入所述配置模板,生成所述配置文件。
具体地,在获取到环境数据后,将环境数据注入到配置模板,此时配置模板中引入当前编译环境的环境数据,生成可以反映当前版本情况的配置。
步骤30所述基于目标函数和所述配置文件,生成目标源码,包括:
步骤301,调用所述目标函数获取所述配置文件中的数据,生成所述目标源码。
具体地,将得到的环境数据注入到version.c.in中目标函数里,生成version.c,version.c对应目标源码。
步骤40将所述目标源码链接到目标执行程序,包括:
步骤401,利用所述编译工具对所述目标源码进行编译处理,并将编译后的数据链接到目标动态库。
步骤402,利用所述编译工具对所述目标源码进行编译处理,并将编译后的数据基于所述数据注入工具链接到所述目标执行程序。
具体地,在生成目标源码后,利用编译工具对目标源码进行编译处理,得到编译后的数据,编译后的数据为可链接数据,从而将该编译后的数据链接到目标动态库。进一步利用数据注入工具将目标源码链接到目标执行程序中,从而实现为目标执行程序注入版本相关数据。也就是说,利用version.cmake对version.c进行编译处理,并利用pg_cpm_functions.cmake将目标源码链接到目标执行程序中。
进一步地,在将目标源码链接到目标动态库中,在需要查看目标动态库的第一版本信息时,使用version tool作为目标版本查询工具进行查看。具体地,在工程编译安装完成后,在安装路径bin目录下生成version_tool工具。使用version_tool的打开动态库,查看动态库相关的第一版本信息。version_tool-h可以查看使用说明。
示例性的使用说明如下所示:
usage://用法;
1.Check share libraries version
./version_tool so1 so2…//利用version_tool查看动态库版本;2.Checklinked share libraries version of elf
ldd elf|grep“=>.”|awk‘{print$3}’|args./version_tool//打印可执行程序依赖的动态库版本信息。
进一步地,在将目标源码连接到目标执行程序中后,可以在程序运行时打印版本信息。
示例性的代码如下所示:
#include<iostream>//引入iostream文件;
extern“C”const char*pg_version_verbose();//声明外部函数C;
int main(int argc,char*argv[]){
std::cout<<pg_version_verbose()<<std::endl;//在主函数中调用该外部函数并打印该外部函数对应的版本信息
}
在一种可能的应用场景中,如图2所示,mirrors表征编译环境,cpm表征第一文件,version表征版本管理项目,在该项目中,在获取当前编译环境对应的环境数据后,将环境数据注入到config c.h中,生成version.c,将编译后的version.c链接到动态库中,目标动态库包括vision_type中的so,以及pgpredict中的pgtools和helper,即存在多个目标动态库,然后可以利用version tool查看动态库中的信息,得到查看的目标动态库的第一版本信息。
在本实施例中,利用camke软件实现为目标动态库或目标执行程序一键添加管理的版本信息,容易复现和回溯调试和测试过程中出现的问题,为数据维护和数据开发提供便利。
示例性装置
基于与本发明方法实施例相同的构思,本发明实施例还提供了一种数据处理装置。
图3示出了本发明一示例性实施例提供的数据处理装置的结构示意图,包括:
数据获取模块31,用于获取当前编译环境对应的环境数据;
文件确定模块32,用于基于所述环境数据,确定配置文件;
源码生成模块33,用于基于目标函数和所述配置文件,生成目标源码;
源码链接模块34,用于将所述目标源码链接到目标动态库,以使得基于目标版本查询工具和所述目标源码,得到所述目标动态库对应的第一版本信息;将所述目标源码链接到目标执行程序,以使得在所述目标执行程序执行时,基于所述目标源码,得到所述目标执行程序对应的第二版本信息。
在本发明一示例性实施例中,所述装置还包括:
项目建立模块,用于建立目标项目;在所述目标项目对应的文件夹中添加第一文件和第二文件;所述第一文件用于添加外部依赖库,所述第二文件用于下载数据,下载的数据包括:配置模板、编译工具、目标版本查询工具和数据注入工具;
所述文件确定模块,进一步用于将所述环境数据注入所述配置模板,生成所述配置文件;
所述源码链接模块,进一步用于利用所述编译工具对所述目标源码进行编译处理,并将编译后的数据链接到目标动态库;利用所述编译工具对所述目标源码进行编译处理,并将编译后的数据基于所述数据注入工具链接到所述目标执行程序。
在本发明一示例性实施例中,所述项目建立模块,进一步用于基于目标软件建立所述目标项目,所述目标软件包括cmake软件。
在本发明一示例性实施例中,所述装置还包括:
数据处理模块,用于在所述cmake软件对应的CMakeLists.txt中添加所述第二文件的引用;在增加所述目标动态库后,添加第一执行语句;所述第一执行语句用于触发所述数据获取模块;在增加所述目标执行程序后,添加第二执行语句,所述第二执行语句用于触发所述数据获取模块。
示例性电子设备
图4图示了根据本发明实施例的电子设备的框图。
如图4所示,电子设备40包括一个或多个处理器41和存储器42。
处理器41可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备40中的其他组件以执行期望的功能。
存储器42可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器41可以运行所述程序指令,以实现上文所述的本发明的各个实施例的数据处理方法以及/或者其他期望的功能。
在一个示例中,电子设备40还可以包括:输入装置43和输出装置44,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。
当然,为了简化,图4中仅示出了该电子设备40中与本发明有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备40还可以包括任何其他适当的组件。
示例性计算机程序产品和计算机可读存储介质
第六方面,除了上述方法和设备以外,本发明的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本发明各种实施例的数据处理方法中的步骤。
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本发明实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
此外,本发明的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本发明各种实施例的数据处理方法中的步骤。
所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
以上结合具体实施例描述了本发明的基本原理,但是,需要指出的是,在本发明中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本发明的各个实施例必须具备的。另外,上述发明的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本发明为必须采用上述具体的细节来实现。
本发明中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
还需要指出的是,在本发明的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本发明的等效方案。
提供所发明的方面的以上描述以使本领域的任何技术人员能够做出或者使用本发明。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本发明的范围。因此,本发明不意图被限制到在此示出的方面,而是按照与在此发明的原理和新颖的特征一致的最宽范围。
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本发明的实施例限制到在此发明的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。
Claims (10)
1.一种数据处理方法,其特征在于,包括:
获取当前编译环境对应的环境数据;
基于所述环境数据,确定配置文件;
基于目标函数和所述配置文件,生成目标源码;
将所述目标源码链接到目标动态库,以使得基于目标版本查询工具和所述目标源码,得到所述目标动态库对应的第一版本信息;将所述目标源码链接到目标执行程序,以使得在所述目标执行程序执行时,基于所述目标源码,得到所述目标执行程序对应的第二版本信息。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
建立目标项目;
在所述目标项目对应的文件夹中添加第一文件和第二文件;所述第一文件用于添加外部依赖库,所述第二文件用于下载数据,下载的数据包括:配置模板、编译工具、目标版本查询工具和数据注入工具;
所述基于所述环境数据,确定配置文件;
将所述环境数据注入所述配置模板,生成所述配置文件;
所述将所述目标源码链接到目标动态库,包括:
利用所述编译工具对所述目标源码进行编译处理,并将编译后的数据链接到目标动态库;
所述将所述目标源码链接到目标执行程序,包括:
利用所述编译工具对所述目标源码进行编译处理,并将编译后的数据基于所述数据注入工具链接到所述目标执行程序。
3.根据权利要求2所述的方法,其特征在于,所述建立目标项目,包括:
基于目标软件建立所述目标项目,所述目标软件包括cmake软件。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
在所述cmake软件对应的CMakeLists.txt中添加所述第二文件的引用;
在增加所述目标动态库后,添加第一执行语句;所述第一执行语句用于指示执行所述获取当前编译环境对应的环境数据;基于所述环境数据,确定配置文件;基于目标函数和所述配置文件,生成目标源码;将所述目标源码链接到目标动态库的步骤;
在增加所述目标执行程序后,添加第二执行语句,所述第二执行语句用于指示执行所述获取当前编译环境对应的环境数据;基于所述环境数据,确定配置文件;基于目标函数和所述配置文件,生成目标源码;将所述目标源码链接到目标执行程序的步骤。
5.一种数据处理装置,其特征在于,包括:
数据获取模块,用于获取当前编译环境对应的环境数据;
文件确定模块,用于基于所述环境数据,确定配置文件;
源码生成模块,用于基于目标函数和所述配置文件,生成目标源码;
源码链接模块,用于将所述目标源码链接到目标动态库,以使得基于目标版本查询工具和所述目标源码,得到所述目标动态库对应的第一版本信息;将所述目标源码链接到目标执行程序,以使得在所述目标执行程序执行时,基于所述目标源码,得到所述目标执行程序对应的第二版本信息。
6.根据权利要求5所述的装置,其特征在于,所述装置还包括:
项目建立模块,用于建立目标项目;在所述目标项目对应的文件夹中添加第一文件和第二文件;所述第一文件用于添加外部依赖库,所述第二文件用于下载数据,下载的数据包括:配置模板、编译工具、目标版本查询工具和数据注入工具;
所述文件确定模块,进一步用于将所述环境数据注入所述配置模板,生成所述配置文件;
所述源码链接模块,进一步用于利用所述编译工具对所述目标源码进行编译处理,并将编译后的数据链接到目标动态库;利用所述编译工具对所述目标源码进行编译处理,并将编译后的数据基于所述数据注入工具链接到所述目标执行程序。
7.根据权利要求6所述的装置,其特征在于,所述项目建立模块,进一步用于基于目标软件建立所述目标项目,所述目标软件包括cmake软件。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
数据处理模块,用于在所述cmake软件对应的CMakeLists.txt中添加所述第二文件的引用;在增加所述目标动态库后,添加第一执行语句;所述第一执行语句用于触发所述数据获取模块;在增加所述目标执行程序后,添加第二执行语句,所述第二执行语句用于触发所述数据获取模块。
9.一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行上述权利要求1-4任一项所述的数据处理方法。
10.一种电子设备,所述电子设备包括:
处理器;
用于存储所述处理器可执行指令的存储器;
所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现上述权利要求1-4任一项所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310644512.0A CN116860315A (zh) | 2023-06-01 | 2023-06-01 | 一种数据处理方法、装置、可读存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310644512.0A CN116860315A (zh) | 2023-06-01 | 2023-06-01 | 一种数据处理方法、装置、可读存储介质及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116860315A true CN116860315A (zh) | 2023-10-10 |
Family
ID=88224106
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310644512.0A Pending CN116860315A (zh) | 2023-06-01 | 2023-06-01 | 一种数据处理方法、装置、可读存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116860315A (zh) |
-
2023
- 2023-06-01 CN CN202310644512.0A patent/CN116860315A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Lawall et al. | Coccinelle: 10 years of automated evolution in the Linux kernel | |
US10331425B2 (en) | Automated source code adaption to inject features between platform versions | |
US8954939B2 (en) | Extending a development environment | |
US8423971B2 (en) | Generating an application software library | |
US9459986B2 (en) | Automatic generation of analysis-equivalent application constructs | |
WO2003062986A1 (en) | Flexible and extensible java bytecode instrumentation system | |
US20110126179A1 (en) | Method and System for Dynamic Patching Software Using Source Code | |
US10452369B2 (en) | Code profiling of executable library for pipeline parallelization | |
US9311077B2 (en) | Identification of code changes using language syntax and changeset data | |
Bergmayr et al. | fREX: fUML-based reverse engineering of executable behavior for software dynamic analysis | |
US12045324B2 (en) | Source modification engine | |
US9747085B2 (en) | Source code generation from prototype source | |
Hafiz et al. | OpenRefactory/C: An infrastructure for building correct and complex C transformations | |
CN116860315A (zh) | 一种数据处理方法、装置、可读存储介质及电子设备 | |
Golemon | Extending and Embedding PHP | |
Brendel et al. | Generic library interception for improved performance measurement and insight | |
Pfeffer et al. | On the Applicability of Annotation-Based Source Code Modification in Kotlin (Work in Progress) | |
Kyriakou et al. | Enhancing C/C++ based OSS development and discoverability with CBRJS: A Rust/Node. js/WebAssembly framework for repackaging legacy codebases | |
US11983265B2 (en) | Automated integration of a source modification engine | |
Barakhshan et al. | Advancing Interactive Parallelization: iCetus | |
Klepinin et al. | Integration of semantic verifiers into Java language compilers | |
Belevantsev et al. | Analysis of entities in C and C++ programs and relations between them for program understanding | |
Lillack et al. | Experiences from reengineering and modularizing a legacy software generator with a projectional language workbench | |
Cortinhas et al. | Extending the groovy language using ast transformations to monitor variables and methods | |
Carlson et al. | C-code generation considered unnecessary: go directly to binary, do not pass C. Compilation of Julia code for deployment in model-based engineering |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |