Я написал небольшую платформу тестирования, которая использует "nm" для проверки разделяемых библиотек и поиска тестовых функций. Затем я использую библиотеку ctypes Python для динамической загрузки общего объекта и выполнения тестовых функций. Есть ли способ сделать это с помощью исполняемого файла? Когда я попробовал тот же трюк в исполняемом модуле, Python сообщил, что он не может динамически загружать исполняемый файл.
Если это ваше собственное приложение, вы можете изменить порядок сборки, чтобы ваш исполняемый файл был только main() { real_main(); }
и real_main()
находится в libapp.so
. Затем вы можете протестировать libapp.so
с помощью существующего кода.
Если возможно загрузить другой исполняемый файл, возможно, это связано с загрузкой ld.so
и получением его для выполнения работы. Если вы запустите /lib/ld-linux.so
(в Linux), он будет печатать строфу с информацией.
Попробуйте связать исполняемый файл с опцией -pie
(если у вас есть возможность сделать это).
(нашел этот параметр в этот запрос функции для добавления поддержки dlopen
исполняемый файл - dlopen
- это то, что используется для загрузки общий объект).
-rdynamic
в драйвер компилятора, если -Wl,--export-dynamic
чувствует себя слишком многословным ...