2

我正在尝试一个 C 程序。我sub在文件中定义了ac 子例程sub.c,如下所示:

int sub (int a, int b)
{
   return a + b;
}

我编译这个文件并生成一个目标文件sub.o

我想从另一个sub名为.sub.omainmain.c

通常我会这样做:

int main ()
{
   int r = sub(10, 20);
   printf("result = %d\n", r);
   return 0;
}

然后编译如下: gcc -o main main.c sub.o

我想要做的是能够通过在运行时sub直接从目标文件中读取其代码来调用子例程。sub.o我知道我可以使用基于共享对象的解决方案。但是有没有一种方法不需要我实现对共享对象的完全支持,并且仍然允许我将代码从对象文件加载到 RAM 中的某个位置并通过跳转到该位置来执行它?简而言之,我正在寻找某种可以让我做到这一点的快速修复。

我知道objdump允许我从.o文件中提取可执行代码,但我以后不怎么处理它。欢迎任何帮助或正确方向的指示。

Note: 我想在用户空间中的任何基于 Linux 的系统上执行此操作。

4

0 回答 0