在C/C (JIT)中,在运行时加载并链接OBJ文件

Load and link obj files at Runtime in C/C++ (JIT)

本文关键字:加载 OBJ 文件 运行时 链接 JIT      更新时间:2023-10-16

我正在搜索一个可以在运行时动态加载和链接OBJ文件的C或C 库。我花了一些时间来寻找这样的库,但是我的结果没有成功。

我尝试的是:

llvm :目前我最好的解决方案!我使用clang以LLVM的字节码形式生成.OBJ文件,并将其JIT函数用于动态负载并执行该函数。但是,LLVM很大,我在家我的PC并没有为JIT编译完整的LLVM的能力。另外,我遇到了一些搬迁溢出或未实现重定位类型的问题。

libjit :我读到,它可以加载。ELF文件并将其链接。但是可悲的是,我无法为Windows编译它,所以我无法尝试。

nanojit和nativejit :似乎他们不支持j j otting对象文件。

那么...我该怎么办?我必须坚持使用LLVM吗?有其他选择吗?

我想一个可以将作为第一方法的类比是.bc类似于.o(或.obj)文件,因为它只是C 代码的翻译中间语言,并且可以包含对未定义的函数的引用,将在库中搜索。

并且JIT-TED代码类似于DLL,因为它将动态地链接到可执行的位置。

您不需要编译LLVM-您可以从LLVM下载LLVM和各种实用程序的二进制文件(例如clang)下载页面