加载到RAM&执行存储在目标文件中的机器代码

时间:2013-11-07 11:08:43

标签: linux object arm execute mmap

我已经构建了一个JIT,它读取c代码并将它们转换为目标文件(.o);目标文件存储一个````main(int argc,char ** argv)''''函数。我的问题是如何将这个对象加载到内存中并执行存储在其中的main函数?

注意:我在SO中看过很多类似的问题,但我无法找到答案,所以请不要将此问题标记为重复的问题

1 个答案:

答案 0 :(得分:0)

您可以指示gcc生成共享对象(.so)文件(可以从.c文件以及.o文件中生成) - options -shared和{{1可能需要这个。然后,您可以使用-fpic加载它,使用void *handle = dlopen(...)获取所包含函数的地址,并使用p = dlsym(handle, "main")执行它。