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