Есть ли способ извлечь символы из ELF и использовать LD для связывания другого файла с символами, определенными в предыдущем ELF?
Я создаю приложение специально для Nintendo Wii, используя devKitPro. Я хотел сделать свое приложение модульным, предлагая возможность загружать код, переданный через двоичный файл objcopy -O. Моя проблема в том, что я хочу, чтобы модули могли использовать символы из основного ELF, который загружен в память. Я пробовал разные вещи, и я не придумал никаких решений.
Я попытался использовать -Map, так как думал, что это позволит мне использовать карту компоновщика, но эта идея не удалась.
Я также попытался скомпилировать в общую библиотеку, но у меня это не сработало, так как компоновщик жаловался на "сегменты только для чтения с динамическим перемещением".
Мне действительно нужна помощь в этом, так как я не нахожусь ни в среде Windows или Linux.
1 ответ
Вы можете рассмотреть возможность сделать это с помощью libdl
который сделан именно для загрузки символов по имени во время выполнения. С помощью libdl
вы можете получить дескрипторы всех функций, которые вы хотите вызвать, как часть подпрограммы инициализации, а затем получить их, когда они понадобятся вашей программе. лучше всего то, что вам не нужно иметь библиотеку, с которой вы ссылаетесь во время компиляции, чтобы вы могли заменить ее любым эльфом, для которого эти символы определены без перекомпиляции.