Могу ли я динамически загрузить исполняемый файл в Linux? - PullRequest
1 голос
/ 14 июня 2011

Я написал небольшую платформу для тестирования, которая использует 'nm' для проверки разделяемых библиотек и поиска тестовых функций. Затем я использую библиотеку Python ctypes для динамической загрузки общего объекта и выполнения тестовых функций. Есть ли способ сделать это с помощью исполняемого файла? Когда я попробовал тот же трюк на исполняемом модуле, Python сообщил, что не может динамически загрузить исполняемый файл.

Ответы [ 2 ]

3 голосов
/ 14 июня 2011

Если это ваше собственное приложение, вы можете переставить сборку так, чтобы ваш исполняемый файл был только main() { real_main(); }, а real_main() - libapp.so. Тогда вы можете протестировать libapp.so с вашим существующим кодом.

Если возможно загрузить другой исполняемый файл, возможно, потребуется загрузка ld.so и заставить его выполнить свою работу. Если вы запустите /lib/ld-linux.so (в Linux), он напечатает раздел с информацией.

1 голос
/ 14 июня 2011

Попробуйте связать исполняемый файл с параметром -pie (если у вас есть возможность сделать это).

(нашел этот параметр в запрос этой функции для добавления поддержки к dlopen исполняемый файл - dlopen - это то, что используется для загрузки общего объекта).

...