Когда я пытаюсь использовать LD_PRELOAD следующим образом,
LD_PRELOAD=getpid.so ./testpid
Я получаю следующую ошибку...
ERROR: ld.so: object 'getpid.so' from LD_PRELOAD cannot be preloaded: ignored.
Я компилирую getpid.so с помощью
gcc -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;
}