Я создаю новое изображение, которое состоит из нескольких двоичных изображений (соединенных вместе с помощью скрипта Python).Проблема в том, что последнее двоичное изображение должно быть скомпилировано с помощью fPIC, а предыдущие изображения - нет.Последнее изображение (скомпилированное с помощью fPIC) повторно использует функции из других двоичных изображений с --just-symbols
.
Проблема в том, что когда я пытаюсь вызвать функцию из другого двоичного файла (символ, полученный с помощью --just symbols
), адрес символа является относительным, а не абсолютным, что вызывает серьезную ошибку.
Как связать символы с абсолютным адресом с двоичным кодом PIC?
Пример кода:
Файл fun.c, скомпилированный в fun.elf, разделен на fun.bin:
int fun(int a,int b)
{
print("help\r\n");
}
Файл fail.c скомпилирован с -fPIC
to и --just-symbols=fun.elf
:
int fail(void)
{
fun(1,3);
}
В примере адрес fun в fail.bin является относительным, а не абсолютным.