__));{ if (foo) foo();如果编译为常规的、非PIE动态链接的可执行文件,则在ld时会解决foo不存在的问题,即使使用LD_PRELOAD来定义foo,也看不到它。另一方面,如果程序被编译为foo,则弱动态符号引用最终会出现在输出中,并且LD_PRELOAD可以使符号PIE可见。有没有办法强制PIE可执行文件的非PIE行为(在ld时解决弱引用符号的不存在问题,而不是在运行时)?
sh: /usr/bin/(swapd): /lib/ld-linux.so.1: bad ELF interpreter: No such file or directory-rwxr-xr-x 1 root root 129832 Oct 25 19:16 ld-2.5.so
lrwxrwxrwx 1 rootroot 9 Nov 24 02:14 <em