gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:35:33 25 4
gpt4 key购买 nike

我构建了一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com