Вы не можете открывать исполняемые файлы как библиотеки. Точка входа исполняемого файла будет пытаться повторно инициализировать библиотеку C и получить указатель brk
. Это повредит вашу кучу malloc. Кроме того, исполняемый файл, скорее всего, будет отображаться по фиксированному адресу без перемещений, и если этот адрес перекрывается с чем-либо уже загруженным, его также невозможно отобразить по этой причине.
Вам необходимо реорганизовать другую программу в библиотеку или добавить интерфейс RPC к другой программе.
Обратите внимание, что это не обязательно относится к исполняемым файлам PIE. Однако, если исполняемый файл не предназначен специально для dlopen()
ed, это небезопасно, так как main()
не будет запущен, и поэтому любая инициализация, выполненная в main()
, не произойдет.