【发布时间】:2012-01-18 10:11:47
【问题描述】:
当我尝试如下使用 LD_PRELOAD 时,
LD_PRELOAD=getpid.so ./testpid
我收到以下错误...
ERROR: ld.so: object 'getpid.so' from LD_PRELOAD cannot be preloaded: ignored.
我使用
编译 getpid.sogcc -Wall -fPIC -shared -o getpid.so getpid.c
它包含以下代码...
// getpid.c
#include <sys/syscall.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
pid_t getpid(void)
{
printf("Hello, world!\n");
return syscall(SYS_getpid);
}
tespid.c 包含使用 getpid 的代码,如下所示,并通过执行
gcc testpid -o testpid.c
这可能是什么问题?为什么 LD_PRELOAD 不起作用?
// testpid.c
#include <sys/syscall.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
int main()
{
printf( "pid = %d!\n", getpid() );
return 0;
}
【问题讨论】: