Cuando intento utilizar LD_PRELOAD de la siguiente manera,ERROR: ld.so: objeto 'getpid.so' de LD_PRELOAD no puede ser precargado: ignorada
LD_PRELOAD=getpid.so ./testpid
me sale el siguiente error ...
ERROR: ld.so: object 'getpid.so' from LD_PRELOAD cannot be preloaded: ignored.
compilo getpid.so utilizando
gcc -Wall -fPIC -shared -o getpid.so getpid.c
y contiene el siguiente código ...
// 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
constains código que utiliza getpid como se muestra a continuación y que se compila haciendo
gcc testpid -o testpid.c
Cuál puede ser el problema aquí? ¿Por qué LD_PRELOAD no funciona?
// 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;
}
Muy cierto! En lugar de LD_PRELOAD = getpid.so ./testpid, debería ser LD_PRELOAD =./Getpid.so ./testpid. Ahora funciona. – MetallicPriest
en mi caso, también tuve que establecer 'LD_LIBRARY_PATH' y obtener la versión de 64 bits de la biblioteca. –