是否可以 dlopen 可执行二进制文件?

问题描述

我知道 dlopen 用于加载使用“-shared”和可能的“-fPIC”编译的共享库。 但是由于可执行文件和动态库共享相同的格式,我想知道是否可以直接加载可执行文件

我们可能需要重新构造一个自定义的dlopen和dlsym是可以接受的,只是想知道是否可以在对二进制文件透明的情况下做这样的事情。

顺便说一句,加载的可执行文件不能被重用也是可以接受的(因为它不是用 -fPIC 编译的)。

提前致谢。

解决方法

used to be possible 用于 dlopen Linux 上的 PIE 可执行文件,但 not anymore -- GLIBC-2.30 禁止这样做。

,

因为可以执行 .so 文件:

您能否将问题转过来将可执行文件(应用程序)编译为“.so”文件?使用 -shared 等?