11
を無視し、私は次のエラーを取得する...ERROR:ld.so:オブジェクトのgetpid.so「LD_PRELOADからはプリロードすることができません:私は、次のようにLD_PRELOADを使用しようとすると、</p> <pre><code>LD_PRELOAD=getpid.so ./testpid </code></pre> <p>を
ERROR: ld.so: object 'getpid.so' from LD_PRELOAD cannot be preloaded: ignored.
私は
gcc -Wall -fPIC -shared -o getpid.so getpid.c
を使用してgetpid.soコンパイルし、それは次のコードが含まれています...
ここで問題になることが何gcc testpid -o testpid.c
を行うことによってコンパイルされ、以下に示すと通りGETPID使用しています
// 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コード? 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;
}
非常に真! LD_PRELOAD = getpid.so ./testpidの代わりに、LD_PRELOAD =。/ getpid.so ./testpidにする必要があります。今はその仕事。 – MetallicPriest
私の場合は、 'LD_LIBRARY_PATH'を設定し、64ビットバージョンのライブラリを入手しなければなりませんでした。 –