问题描述
我知道 dlopen 用于加载使用“-shared”和可能的“-fPIC”编译的共享库。 但是由于可执行文件和动态库共享相同的格式,我想知道是否可以直接加载可执行文件?
我们可能需要重新构造一个自定义的dlopen和dlsym是可以接受的,只是想知道是否可以在对二进制文件透明的情况下做这样的事情。
顺便说一句,加载的可执行文件不能被重用也是可以接受的(因为它不是用 -fPIC 编译的)。
提前致谢。
解决方法
此 used to be possible 用于 dlopen
Linux 上的 PIE 可执行文件,但 not anymore -- GLIBC-2.30 禁止这样做。
因为可以执行 .so
文件:
您能否将问题转过来将可执行文件(应用程序)编译为“.so”文件?使用 -shared
等?