c - 如何在执行时编译一段C代码,并获得对应函数的指针?

标签 c compilation jit

假设我在执行时生成一个 C 程序:

source = "int add_x_y(int x, int y){ return x + y; }";
source_size = 42;

我想要以下功能:

void* compile(char* source, int source_size);

这样:

int (*f)(int,int) = compile(source, source_size);
printf("%d\n",f(2,3));

输出:

5

并且 compile 不能依赖于外部工具(编译器),因为我想在 emscripten (将 C 程序转换为 .js 文件)中使用它。

这可能吗?

最佳答案

其他人可能可以比我更好地填写一些细节,但如果您不介意调用 GCC 或链接到它,它应该是可行的。如果将代码写入文件,则将该文件编译为共享库 (.SO)。从这里开始,加载共享库并获取所需符号的地址就很简单了。

关于c - 如何在执行时编译一段C代码,并获得对应函数的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26392477/

相关文章:

c - 如何编写时间复杂度为 O(log n) 的计算 m^n 的迭代版本?

c++ - 如何使用 html tidy C++ 编译 C++ 程序

c# - 它真的是 JIT 优化中的错误还是我遗漏了什么?

python - 重新编译 JIT 函数时的 JAX Hook /信息/警告

c - C语言如何读取包含空格的字符串

在 Windows 上从内存创建 HICON

c - 为什么局部函数中的变量不会消失? (链表的插入函数)

python - 使用 Pyinstaller 编译 PyQt4 时出错

code-generation - Java JVM/.NET CLR 的代码生成

java - 为代码段的特定方法禁用 Java JIT