Как вызвать подпрограмму C из объектного файла во время выполнения

Я пробую программу на Си. У меня есть подпрограмма переменного тока sub определяется в файле 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 во время выполнения. Я знаю, что могу использовать решение на основе общих объектов. Но есть ли способ, который не требует от меня полной поддержки общего объекта и все же позволяет мне загружать код из объектного файла в какое-то место в ОЗУ и выполнять его, перепрыгивая в это место? Короче говоря, я ищу какой-то способ исправления, который позволил бы мне это сделать.

я знаю objdump позволяет мне извлечь исполняемый код из .o файл, но я не знаю, что с ним делать позже. Любая помощь или указатели в правильном направлении приветствуются.

Note:Я хочу сделать это на любой Linux-системе в пространстве пользователя.

0 ответов

Другие вопросы по тегам