我已经构建了一个JIT,它读取c代码并将它们转换为目标文件(.o);目标文件存储一个````main(int argc,char ** argv)''''函数。我的问题是如何将这个对象加载到内存中并执行存储在其中的main函数?
注意:我在SO中看过很多类似的问题,但我无法找到答案,所以请不要将此问题标记为重复的问题
答案 0 :(得分:0)
您可以指示gcc
生成共享对象(.so)文件(可以从.c文件以及.o文件中生成) - options -shared
和{{1可能需要这个。然后,您可以使用-fpic
加载它,使用void *handle = dlopen(...)
获取所包含函数的地址,并使用p = dlsym(handle, "main")
执行它。