मैं, निम्नलिखित के रूप में उपयोग करने के लिए LD_PRELOADत्रुटि: ld.so: वस्तु LD_PRELOAD से 'getpid.so' पहले से लोड नहीं किया जा सकता: नजरअंदाज कर दिया
LD_PRELOAD=getpid.so ./testpid
मैं निम्न त्रुटि ...
ERROR: ld.so: object 'getpid.so' from LD_PRELOAD cannot be preloaded: ignored.
का प्रयास करते हैं
मैं
gcc -Wall -fPIC -shared -o getpid.so getpid.c
का उपयोग करके getpid.so संकलन और यह निम्नलिखित कोड शामिल ...
// 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 कोड है जो नीचे दिखाया गया है और के रूप में getpid का उपयोग करता है जो
gcc testpid -o testpid.c
करके संकलित किया गया है यहाँ समस्या हो सकती है क्या? एलडी_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-बिट संस्करण प्राप्त करना था। –