Есть ли способ извлечь символы из ELF и использовать LD для связывания другого файла с символами, определенными в предыдущем ELF?

Я создаю приложение специально для Nintendo Wii, используя devKitPro. Я хотел сделать свое приложение модульным, предлагая возможность загружать код, переданный через двоичный файл objcopy -O. Моя проблема в том, что я хочу, чтобы модули могли использовать символы из основного ELF, который загружен в память. Я пробовал разные вещи, и я не придумал никаких решений.

  • Я попытался использовать -Map, так как думал, что это позволит мне использовать карту компоновщика, но эта идея не удалась.

  • Я также попытался скомпилировать в общую библиотеку, но у меня это не сработало, так как компоновщик жаловался на "сегменты только для чтения с динамическим перемещением".

Мне действительно нужна помощь в этом, так как я не нахожусь ни в среде Windows или Linux.

1 ответ

Вы можете рассмотреть возможность сделать это с помощью libdl который сделан именно для загрузки символов по имени во время выполнения. С помощью libdl вы можете получить дескрипторы всех функций, которые вы хотите вызвать, как часть подпрограммы инициализации, а затем получить их, когда они понадобятся вашей программе. лучше всего то, что вам не нужно иметь библиотеку, с которой вы ссылаетесь во время компиляции, чтобы вы могли заменить ее любым эльфом, для которого эти символы определены без перекомпиляции.

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