मैं निम्नलिखित त्रुटि मिलती है जब मैं एक स्क्रिप्ट के लिए मैं केवल निष्पादन उपयोग कर सकते है चलाने का प्रयास: इस के बाद किया जाता है मैं LD_PRELOAD
वातावरण की स्थापना की हैLD_PRELOAD के लिए मेरे lib स्थापना बनाता है कुछ प्रक्रियाओं लोडर त्रुटियां उत्पन्न
uname: symbol lookup error: /home/dumindara/random/sotest/a.out: undefined symbol: dlsym
परिवर्तनीय /home/dumindara/random/sotest/a.out
।
a.out
में एक परीक्षण malloc
फ़ंक्शन है, और आंतरिक रूप से dlsym
पर कॉल करता है।
ls
चलाते समय मुझे यह समस्या नहीं आती है। अधिकांश प्रक्रियाएं इस त्रुटि को देती हैं। ऐसा क्यों होता है और मैं इसे काम करने के लिए क्या कर सकता हूं?
यह आम तौर पर एक अच्छी बात है शैल पर्यावरण को संशोधित करने के बजाय, केवल a.out के लिए LD_PRELOAD सेट करने का विचार। अधिकांश यूनिक्स शैल में आप टाइप कर सकते हैं: 'LD_PRELOAD = xyz।/A.out'। अन्यथा, '(LD_PRELOAD = xyz; ./a.out)' आज़माएं। –
@ टोनी: मुझे लगता है कि इस मामले में एक बीमार चुना गया नाम होने के बावजूद a.out एक साझा वस्तु है। ओपी स्पष्ट रूप से 'malloc()' को अपने स्वयं के संस्करण के साथ ओवरराइड करने का प्रयास कर रहा है और फिर वास्तविक मॉलोक में पास-थ्रू कर रहा है। – thkala
@khkhala: आह, अच्छा पकड़ ... 'LD_PRELOAD = \' pwd \ '/a.out program_to_test' की तरह अधिक होगा .... –