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

标签 linux object arm execute mmap

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

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

最佳答案

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

关于linux - 加载到 RAM 中并执行存储在目标文件中的机器代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19834375/

相关文章:

Linux/终端 Grep 总内存

javascript - 包含对象的 JSON 的迭代

c - 带有 aapcs 的 GCC 内联汇编

javascript - 在对象中保存 DOM 元素的有效方法

android - Android ARM 设备/模拟器上的 libusb 崩溃

c - 交叉编译时如何使用外部库?

linux - 以相反顺序打印由点分隔的字符串

linux - 如何让我的 Golang Web 服务器在后台运行?

regex - 在带sed的括号前放置逗号

java - 使用数组时出现 NullPointerException