如何在运行时从目标文件中调用C子例程

时间:2014-08-15 10:18:20

标签: c linux object-code

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

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

我编译此文件并生成目标文件sub.o

我想从名为sub的另一个文件中定义的sub.o子例程中调用位于main的子例程main.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的系统上执行此操作。

0 个答案:

没有答案