CN116243971B - 一种基于静态依赖自举的内核无关的模块构建方法 - Google Patents

一种基于静态依赖自举的内核无关的模块构建方法 Download PDF

Info

Publication number
CN116243971B
CN116243971B CN202310517727.6A CN202310517727A CN116243971B CN 116243971 B CN116243971 B CN 116243971B CN 202310517727 A CN202310517727 A CN 202310517727A CN 116243971 B CN116243971 B CN 116243971B
Authority
CN
China
Prior art keywords
kernel
module
compiling
file
static 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.)
Active
Application number
CN202310517727.6A
Other languages
English (en)
Other versions
CN116243971A (zh
Inventor
温研
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Linzhuo Information Technology Co Ltd
Original Assignee
Beijing Linzhuo Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Linzhuo Information Technology Co Ltd filed Critical Beijing Linzhuo Information Technology Co Ltd
Priority to CN202310517727.6A priority Critical patent/CN116243971B/zh
Publication of CN116243971A publication Critical patent/CN116243971A/zh
Application granted granted Critical
Publication of CN116243971B publication Critical patent/CN116243971B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/76Adapting program code to run in a different environment; Porting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明公开了一种基于静态依赖自举的内核无关的模块构建方法,通过修改Linux开发环境中的编译过程,实现了基于Linux开发环境对内核模块的依赖自举的静态编译,将内核模块编译为依赖自包含的二进制文件,实现了内核模块仅需一次编译即可在具有不同内核版本的Linux生产环境上的直接运行。

Description

一种基于静态依赖自举的内核无关的模块构建方法
技术领域
本发明属于计算机软件开发技术领域,具体涉及一种基于静态依赖自举的内核无关的模块构建方法。
背景技术
随着技术的不断发展,Linux系统的功能在不断完善,对应的Linux内核版本在不断地更新升级,然而在Linux内核版本升级过程中不同Linux内核版本所提供的API或符号也可能发生变化,甚至是相同功能API的名称、参数数量或参数类型也会发生改变,这会导致基于某个版本的Linux内核头文件编译成功的内核模块(例如:驱动、系统级测试工具等)很难在其他版本的Linux内核上正确运行,增加了Linux内核模块的开发难度,也降低了Linux内核模块的兼容性。
发明内容
有鉴于此,本发明提供了一种基于静态依赖自举的内核无关的模块构建方法,实现了由Linux开发环境编译得到的内核模块二进制文件在不同Linux生产环境中的直接运行。
本发明提供的一种基于静态依赖自举的内核无关的模块构建方法,包括以下步骤:
步骤1、使Linux开发环境的内核版本及已安装的内核头文件相一致,获取Linux开发环境的编译配置文件及内核符号表;在该编译配置文件中增加生成位置无关代码及不导出任何符号的编译选项;
步骤2、在Linux开发环境对应的内核源码文件中设置导出内核符号表中的所有符号,采用编译配置文件生成该内核源码文件的Makefile,基于Makefile编译该内核源码文件,若编译过程产生错误则执行步骤3;否则将编译得到的目标代码文件打包成静态库作为内核静态库,执行步骤4;
步骤3、将错误对应的内容从Makefile中删除,再根据修改后的Makefile执行内核源码文件的编译,若编译过程产生错误则执行步骤3,否则将编译得到的目标代码文件打包成静态库,该静态库即为内核静态库,执行步骤4;
步骤4、在Linux开发环境中基于内核静态库编译待安装内核模块,若编译过程产生链接内核API失败的错误则获取内核API对应的二进制代码,并将该二进制代码转换为静态库文件作为内核API静态库,将内核API静态库及内核静态库链接到待安装内核模块生成待安装内核模块的二进制文件;若编译过程中未产生错误则将内核静态库链接到待安装内核模块生成待安装内核模块的二进制文件。
进一步地,所述步骤1中还包括:获取Linux开发环境的内核版本及已安装的内核头文件,若内核版本与内核头文件不同则重新安装内核头文件直至两者相一致。
进一步地,所述步骤2中所述在Linux开发环境对应的内核源码文件中设置导出内核符号表中的所有符号的方式为:在Linux开发环境对应的内核源码文件中定位内核符号表中所有符号定义对应的代码位置为符号定义位置,在所有符号定义位置之前增加导出该符号的标志。
进一步地,在所述步骤2之前执行以下操作:确定待安装内核模块相关的外部符号,在内核符号表中仅保留与外部符号有关的信息。
进一步地,所述确定待安装内核模块相关的外部符号的方式为:对待安装内核模块进行静态代码解析以确定其所使用的外部符号。
进一步地,所述步骤4中所述在Linux开发环境中基于内核静态库编译待安装内核模块中还包括:提取待安装内核模块中所有与内核API相关且由待安装内核模块分配的数据结构,并将该数据结构的地址和长度作为标准地址和标准长度注册到数据动态管理器。
进一步地,还包括:在Linux生产环境中待安装内核模块初始化时,数据动态管理器向内核注册访存异常处理器;若访存异常处理器捕获到访存异常,则提取访存异常发生的内存地址A,当该内存地址A位于标准地址的地址范围内时根据当前数据结构的长度确定新长度后,分配长度为新长度的内存地址B,并将数据结构的内容复制到内存地址B中,再将产生异常的指令的操作数中的地址设置为内存地址B,并将内存地址B和新长度向数据动态管理器注册,最后将异常处理结果设置为继续执行。
进一步地,还包括:建立内存地址A与内存地址B之间的映射关系。
有益效果
本发明通过修改Linux开发环境中的编译过程,实现了基于Linux开发环境对内核模块的依赖自举的静态编译,将内核模块编译为依赖自包含的二进制文件,实现了内核模块仅需一次编译即可在具有不同内核版本的Linux生产环境上的直接运行。
具体实施方式
下面列举实施例,对本发明进行详细描述。
本发明提供了一种基于静态依赖自举的内核无关的模块构建方法,其核心思想是:在Linux开发环境中编译待安装内核模块时将待安装内核模块依赖的所有Linux内核API都静态植入到待安装内核模块中生成对应的二进制文件,此外通过建立内存越界保护机制解决不同内核数据结构的兼容性问题以确保该二进制文件在Linux生产环境中运行的可靠性。
本发明提供的一种基于静态依赖自举的内核无关的模块构建方法,具体包括以下步骤:
步骤1、获取Linux开发环境的内核版本及已安装的内核头文件,若内核版本与内核头文件不同则重新安装内核头文件直至两者完全一致,获取Linux开发环境的编译配置文件及内核符号表;在Linux开发环境的编译配置文件中增加生成位置无关代码的编译选项及不导出任何符号的编译选项。
其中,位置无关代码(Position Independent Code,PIC)是指代码无论被加载到哪个地址都可以正常执行,通过在gcc选项中添加-fPIC选项即可生成相关代码。内核符号表通常为/proc/kallsymbols。
步骤2、获取Linux开发环境对应的内核源码文件,在内核源码文件中定位内核符号表中所有符号定义对应的代码位置为符号定义位置,在所有符号定义位置之前增加导出该符号的标志;采用编译配置文件生成该内核源码文件的Makefile,基于Makefile编译该内核源码文件,若编译过程产生错误则执行步骤3;否则将编译得到的目标代码文件打包成静态库,该静态库即为内核静态库,执行步骤4。
其中,导出符号的标志可为_attribute_((visibility("default")))。
为了进一步提高待安装内核模块对应的二进制文件的生成效率及使用该内核静态库时的链接效率,本发明在步骤2之前增加以下步骤:
步骤2.1、确定待安装内核模块相关的外部符号。
具体可采用以下两种方式:一是通过对待安装内核模块进行静态代码解析,确定其需要使用的外部符号;二是在编译器编译待安装内核模块过程中导出其所依赖的外部符号。
步骤2.2、在内核符号表中仅保留步骤2.1确定的外部符号相关信息。
步骤3、将错误对应的内容从生成的Makefile中删除,再根据修改后的Makefile执行内核源码文件的编译,若编译过程产生错误则执行步骤3,否则将编译得到的目标代码文件打包成静态库,该静态库即为内核静态库,执行步骤4。
本发明采用将目标代码文件打包成静态库而不是动态库或可执行程序链接的方式,有效避免了由移除内核源文件所导致的符号缺失的错误。
步骤4、在Linux开发环境中,基于得到内核静态库编译待安装内核模块,若编译过程产生链接内核API失败的错误则获取内核API对应的二进制代码,并将该二进制代码转换为静态库文件,将该静态库文件作为内核API静态库,将内核API静态库及内核静态库链接到待安装内核模块生成待安装内核模块的二进制文件;若编译过程中未产生错误则将内核静态库链接到待安装内核模块生成待安装内核模块的二进制文件。
其中,待安装内核模块在编译过程中如果产生多个链接内核API失败的错误,则将所有错误相关的内核API对应的二进制代码都链接到待安装内核模块中。
此外,为了进一步提高待安装内核模块的二进制文件在Linux生产环境中运行的可靠性,本发明还在待安装内核模块中增加了数据结构动态管理机制,具体方式为:
步骤4.1、基于得到的内核静态库编译待安装内核模块,同时提取待安装内核模块中所有与内核API相关且由待安装内核模块分配的数据结构,并将该数据结构的地址和长度注册到数据动态管理器;若编译过程产生链接内核API失败的错误则获取内核API对应的二进制代码,并将该二进制代码转换为静态库文件,将该静态库文件作为内核API静态库,将内核API静态库及内核静态库链接到待安装内核模块生成待安装内核模块的二进制文件;若编译过程中未产生错误则将内核静态库链接到待安装内核模块生成待安装内核模块的二进制文件。
步骤4.2、在Linux生产环境中,运行待安装内核模块的二进制文件;在待安装内核模块初始化时,数据动态管理器向内核注册访存异常处理器;若该访存异常处理器捕获到访存异常,则提取访存异常发生的内存地址A,当该内存地址A位于步骤4.1注册的数据结构的地址范围内时根据数据结构的长度确定更新长度后分配长度为新长度的内存地址B,并将数据结构的内容复制到内存地址B中,再将产生异常的指令的操作数中的地址设置为内存地址B,将内存地址B和新长度向数据动态管理器注册,然后将异常处理结果设置为继续执行。
进一步地,本发明建立了内存地址A与内存地址B之间的映射关系,以避免由同一内存地址多次产生异常所导致的多次内存分配的问题。
实施例
本实施例中,采用本发明提供的一种基于静态依赖自举的内核无关的模块构建方法实现了跨Linux生产环境的内核模块的构建,具体包括以下步骤:
S1、采用uname命令获取Linux开发环境的内核版本,获取Linux开发环境的内核头文件,如果内核版本与内核头文件不一致,则重新安装内核头文件直到内核版本与内核头文件相同;在内核镜像目录下,一般为/boot目录,获取与当前内核版本对应的编译config文件,基于该编译config文件构建新的config文件,在新的config文件的全局编译选项中加入PIC编译选项,即“-fPIC”,以便后续将Linux开发环境对应的内核源码文件编译为PIC类代码。
S2、修改Linux开发环境的内核编译程序,即将内核编译程序中将内核编译结果打包成内核启动镜像的代码删除。
S3、在新的config文件的全局编译选项中加入选项“-fvisibility=hidden”,以实现在编译过程中不导出任何符号。
S4、获取Linux开发环境的/proc/kallsymbols中的所有符号名,使用静态代码解析工具在Linux开发环境对应的内核源码文件中定位这些符号的位置,在这些符号的定义前加上导出此符号的标志__attribute__((visibility("default")))。
由此确保在生成的内核静态库中仅包含这些符号,这有利于提升待安装内核模块的链接速度。
S5、修改Linux开发环境的内核编译程序,在编译过程的最后,将由内核源码文件编译得到的目标代码文件,目标代码文件一般是后缀名为“.o”的文件,打包为archive格式的静态库,将该静态库作为内核静态库,也可采用Linux系统提供的备份压缩命令ar来实现。
若增加了PIC选项后出现编译错误的内核组件,则从内核编译过程中将其屏蔽,即从config文件中屏蔽,直至编译争取并生成内核静态库,具体为:
构建内核的自动化编译脚本,即Makefile文件,当出现编译错误所导致的退出时,则将错误涉及的内容从Makefile文件中移除,反复执行此过程,直至编译成功结束。
S6、生成自动编译内核所需的Makefile文件,例如由make menuconfig命令生成Makefile文件。
S7、修改Linux开发环境的内核编译程序,在编译待安装内核模块时,以静态库的形式链接待安装内核模块依赖的内核API。
由于S5中删除了一些源文件可能导致一些符号未被编译到内核静态库中,因此在待安装内核模块的编译过程中,当存在未能成功链接的内核API时,则对每个内核API执行:
构建内核模块A用于处理未能成功链接的内核API的问题,内核模块A从内核中直接读取内核API的完整二进制代码,具体可从/proc/kallsymbols中获取内核API的入口地址,再基于代码基本块的分析获取此内核API的完整二进制代码;再将得到的完整二进制代码dump成对应的静态库文件;由所有内核API的静态库文件构成内核API静态库。
再将内核API静态库和内核静态库链接到待安装内核模块,生成待安装内核模块的二进制文件。
S8、在待安装内核模块中增加数据结构动态管理模块,记为dataDynamicManager,实现待安装内核模块与内核交互的数据结构的内存越界保护。
Linux内核版本的变化会导致内核一些数据结构的变化,一般是新内核会增加一些数据结构成员,也就是说新内核的数据结构往往会增大。
具体过程为:
S8.1、在待安装内核模块编译过程中,通过静态代码分析,提取出所有分配的且传递到Linux内核的数据结构,在所有分配这些数据结构的代码后写入“向dataDynamicManager注册数据结构地址和数据结构长度的代码”。
S8.2、在待安装内核模块在Linux生产环境中初始化时,dataDynamicManager向内核注册访存异常处理器即Memory Access Exception Handler。
S8.3、当dataDynamicManager的访存异常处理器收到访存异常时,提取异常发生的内存地址,如此内存地址在任何一个之前注册的数据结构范围内,则根据此数据结构的长度,按此长度*2的长度重新分配内存空间,并将之前数据结构的内容复制过来,将产生异常的指令的操作数中的地址设置为新地址,将新地址和新长度向dataDynamicManager注册,然后将异常处理结果设置为继续执行。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种基于静态依赖自举的内核无关的模块构建方法,其特征在于,包括以下步骤:
步骤1、使Linux开发环境的内核版本及已安装的内核头文件相一致,获取Linux开发环境的编译配置文件及内核符号表;在该编译配置文件中增加生成位置无关代码及不导出任何符号的编译选项;
步骤2、在Linux开发环境对应的内核源码文件中设置导出内核符号表中的所有符号,采用编译配置文件生成该内核源码文件的Makefile,基于Makefile编译该内核源码文件,若编译过程产生错误则执行步骤3;否则将编译得到的目标代码文件打包成静态库作为内核静态库,执行步骤4;
步骤3、将错误对应的内容从Makefile中删除,再根据修改后的Makefile执行内核源码文件的编译,若编译过程产生错误则执行步骤3,否则将编译得到的目标代码文件打包成静态库,该静态库即为内核静态库,执行步骤4;
步骤4、在Linux开发环境中基于内核静态库编译待安装内核模块,若编译过程产生链接内核API失败的错误则获取内核API对应的二进制代码,并将该二进制代码转换为静态库文件作为内核API静态库,将内核API静态库及内核静态库链接到待安装内核模块生成待安装内核模块的二进制文件;若编译过程中未产生错误则将内核静态库链接到待安装内核模块生成待安装内核模块的二进制文件。
2.根据权利要求1所述的模块构建方法,其特征在于,所述步骤1中还包括:获取Linux开发环境的内核版本及已安装的内核头文件,若内核版本与内核头文件不同则重新安装内核头文件直至两者相一致。
3.根据权利要求1所述的模块构建方法,其特征在于,所述步骤2中所述在Linux开发环境对应的内核源码文件中设置导出内核符号表中的所有符号的方式为:在Linux开发环境对应的内核源码文件中定位内核符号表中所有符号定义对应的代码位置为符号定义位置,在所有符号定义位置之前增加导出该符号的标志。
4.根据权利要求1所述的模块构建方法,其特征在于,在所述步骤2之前执行以下操作:确定待安装内核模块相关的外部符号,在内核符号表中仅保留与外部符号有关的信息。
5.根据权利要求4所述的模块构建方法,其特征在于,所述确定待安装内核模块相关的外部符号的方式为:对待安装内核模块进行静态代码解析以确定其所使用的外部符号。
6.根据权利要求1所述的模块构建方法,其特征在于,所述步骤4中所述在Linux开发环境中基于内核静态库编译待安装内核模块中还包括:提取待安装内核模块中所有与内核API相关且由待安装内核模块分配的数据结构,并将该数据结构的地址和长度作为标准地址和标准长度注册到数据动态管理器。
7.根据权利要求6所述的模块构建方法,其特征在于,还包括:在Linux生产环境中待安装内核模块初始化时,数据动态管理器向内核注册访存异常处理器;若访存异常处理器捕获到访存异常,则提取访存异常发生的内存地址A,当该内存地址A位于标准地址的地址范围内时根据当前数据结构的长度确定新长度后,分配长度为新长度的内存地址B,并将数据结构的内容复制到内存地址B中,再将产生异常的指令的操作数中的地址设置为内存地址B,并将内存地址B和新长度向数据动态管理器注册,最后将异常处理结果设置为继续执行。
8.根据权利要求7所述的模块构建方法,其特征在于,还包括:建立内存地址A与内存地址B之间的映射关系。
CN202310517727.6A 2023-05-10 2023-05-10 一种基于静态依赖自举的内核无关的模块构建方法 Active CN116243971B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310517727.6A CN116243971B (zh) 2023-05-10 2023-05-10 一种基于静态依赖自举的内核无关的模块构建方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310517727.6A CN116243971B (zh) 2023-05-10 2023-05-10 一种基于静态依赖自举的内核无关的模块构建方法

Publications (2)

Publication Number Publication Date
CN116243971A CN116243971A (zh) 2023-06-09
CN116243971B true CN116243971B (zh) 2023-07-28

Family

ID=86633472

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310517727.6A Active CN116243971B (zh) 2023-05-10 2023-05-10 一种基于静态依赖自举的内核无关的模块构建方法

Country Status (1)

Country Link
CN (1) CN116243971B (zh)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113220303A (zh) * 2021-04-21 2021-08-06 北京麟卓信息科技有限公司 一种内核模块的编译方法和系统

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6298481B1 (en) * 1998-10-30 2001-10-02 Segasoft, Inc. System for modifying the functionality of compiled computer code at run-time
JP2005523516A (ja) * 2002-04-17 2005-08-04 コンピュータ アソシエイツ シンク,インコーポレイテッド 複数のカーネルバージョン上でランするカーネルモジュールを修正する装置及び方法
US20070234300A1 (en) * 2003-09-18 2007-10-04 Leake David W Method and Apparatus for Performing State-Table Driven Regression Testing
US20140082605A1 (en) * 2012-09-14 2014-03-20 Paul (Plamen) Arssov Method for adjusting of binary files built under one initial operating system environment in a way to load on multiple other operating system environments which include customizing information, and software programs based on the method
CN106293756A (zh) * 2016-08-16 2017-01-04 汉柏科技有限公司 一种用于快速更换的自定义Linux内核系统
CN106815031B (zh) * 2017-02-22 2020-03-24 百度在线网络技术(北京)有限公司 内核模块加载方法和装置
CN112363726A (zh) * 2020-11-10 2021-02-12 北京麟卓信息科技有限公司 一种内核模块的跨内核版本编译方法及系统
CN115599448A (zh) * 2021-06-28 2023-01-13 深圳市中兴微电子技术有限公司(Cn) 一种基于linux内核ko模块的加载方法及装置
CN114003235A (zh) * 2021-11-01 2022-02-01 北京技德系统技术有限公司 内核模块编译方法、装置、计算机设备和存储介质
CN114816417B (zh) * 2022-04-18 2022-10-11 北京凝思软件股份有限公司 一种交叉编译方法、装置、计算设备及存储介质
CN115878178A (zh) * 2022-11-03 2023-03-31 中科时代(深圳)计算机系统有限公司 Codesys运行时软件的移植方法、装置及存储介质
CN115543341B (zh) * 2022-11-27 2023-02-03 北京麟卓信息科技有限公司 一种基于内联函数分析的内核函数动态定位方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113220303A (zh) * 2021-04-21 2021-08-06 北京麟卓信息科技有限公司 一种内核模块的编译方法和系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于编译选项的Linux内核交互式图解软件设计;潘朋飞;李素科;荆琦;;微型机与应用(第08期);全文 *

Also Published As

Publication number Publication date
CN116243971A (zh) 2023-06-09

Similar Documents

Publication Publication Date Title
US5546586A (en) Method and apparatus for vectorizing the contents of a read only memory device without modifying underlying source code
US7757225B2 (en) Linktime recognition of alternative implementations of programmed functionality
US5481713A (en) Method and apparatus for patching code residing on a read only memory device
US6067641A (en) Demand-based generation of symbolic information
US8607208B1 (en) System and methods for object code hot updates
US6795963B1 (en) Method and system for optimizing systems with enhanced debugging information
US8984502B2 (en) Systems and methods for composing or decomposing a composite image for firmware update images
US10331425B2 (en) Automated source code adaption to inject features between platform versions
US20030126590A1 (en) System and method for dynamic data-type checking
US9417931B2 (en) Unified metadata for external components
WO1997032250A1 (en) Interactive software development system
WO1997043711A1 (en) Incremental byte code compilation system
US20080005728A1 (en) Methods, systems, and computer program products for enabling cross language access to an addressable entity in an execution environment
JP2000181725A (ja) 実行可能なコ―ドを改変し、追加機能を付与するための方法およびシステム
US20080005727A1 (en) Methods, systems, and computer program products for enabling cross language access to an addressable entity
US20080313208A1 (en) Apparatus, system, and method for automated context-sensitive message organization
US9459986B2 (en) Automatic generation of analysis-equivalent application constructs
US10133871B1 (en) Method and system for identifying functional attributes that change the intended operation of a compiled binary extracted from a target system
US20090320007A1 (en) Local metadata for external components
JP4806158B2 (ja) マークアップ内でサブクラスを宣言的に定義し、使用するためのシステムおよび方法
WO2011042228A1 (en) Method and system to handle java class versioning
CN111552480B (zh) 跨平台编译方法、装置、设备及可读存储介质
CN116243971B (zh) 一种基于静态依赖自举的内核无关的模块构建方法
CA2019603A1 (en) Incremental compiler for source-code development system
CN115456628A (zh) 基于区块链的智能合约查看方法、装置、存储介质及设备

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
GR01 Patent grant
GR01 Patent grant