Как вызвать подпрограмму 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-системе в пространстве пользователя.