我正在寻找一个C或C++库,它可以在运行时动态加载和链接obj文件(无论是ELF还是obj)。我花了一些时间寻找这样的库,但我的结果并不成功。
我所尝试的:
LLVM:目前最好的解决方案!我使用Clang生成LLVM字节码格式的.obj文件,并使用它的JIT函数动态加载和执行函数。但是,LLVM很大,我家里的PC没有能力编译完整的LLVM,只是为了JIT。我还遇到了一些重定位溢出或未实现重定位类型的问题。
libjit:我读到,它可以加载.elf文件并链接它们。但遗憾的是,我不能为windows编译它,所以我不能尝试。
Nanojit和NativeJit:似乎不支持对象文件的JIT。
那么.
1条答案
按热度按时间3lxsmp7m1#
我假设可以作为第一种方法的类比是,
.bc
(LLVM位代码)类似于.o
(或.obj
)文件,因为它只是将C++代码转换为中间语言,并且它可以包含对其中未定义的函数的引用,以便在库中搜索。JIT代码类似于DLL,因为它将动态链接到运行它的可执行文件。
您不需要编译LLVM --您可以从LLVM Download Page下载LLVM的二进制文件和各种实用程序(如
clang