我写了一个小测试框架,使用'nm‘来检查共享库和寻找测试函数。然后,我使用Python的ctypes库动态加载共享对象并执行测试函数。有没有办法用可执行文件做到这一点?当我在可执行模块上尝试相同的技巧时,Python报告它无法动态加载可执行文件。
发布于 2011-06-15 00:27:41
如果这是您自己的应用程序,您可以重新安排构建,以便您的可执行文件只有main() { real_main(); },而real_main()在libapp.so中。然后,您可以使用现有代码测试libapp.so。
如果可以加载另一个可执行文件,则可能需要加载ld.so并让它完成工作。如果您运行/lib/ld-linux.so (在Linux上),它将打印包含信息的节。
发布于 2011-06-15 01:51:27
尝试使用-pie选项链接可执行文件(如果可以这样做的话)。
(在this feature request上找到了此选项,用于添加对dlopen可执行文件的支持-- dlopen用于加载共享对象)。
https://stackoverflow.com/questions/6346757
复制相似问题