Ищу способ загрузить сгенерированный объектный код прямо из памяти.
Я понимаю, что если я запишу его в файл, я могу вызвать dlopen, чтобы динамически загружать его символы и связывать их. Однако это кажется немного окольным путем, учитывая, что он начинается в памяти, записывается на диск, а затем перезагружается в память с помощью dlopen. Мне интересно, есть ли способ динамически связать объектный код, существующий в памяти. Насколько я могу судить, это может быть несколько разных способов:
Уловка заключается в том, что вы думаете, что ваша ячейка памяти - это файл, даже если он никогда не покидает память.
Найдите какой-нибудь другой системный вызов, который выполняет то, что я ищу (я не думаю, что он существует).
Найдите какую-нибудь библиотеку динамического связывания, которая может связывать код прямо в памяти. Очевидно, это немного сложно найти в Google, поскольку «библиотека динамического связывания» предоставляет информацию о том, как динамически связывать библиотеки, а не о библиотеках, которые выполняют задачу динамического связывания.
Абстрагируйте некоторый API от компоновщика и создайте новую библиотеку из его кодовой базы. (очевидно, для меня это наименее желательный вариант).
Итак, какие из них возможны? достижимый? Не могли бы вы указать мне на какие-то вещи, о существовании которых я предполагал? Есть ли другой способ, о котором я даже не думал?