मैं एक प्रणाली "fsimage.so" कि mkdirp, जो सिर्फ libgen.so में रहने के लिए होता है की आवश्यकता है। लेकिन fsimage.so यह नहीं जानता है। उदाहरण के लिए:क्या मैं मौजूदा साझा ऑब्जेक्ट में लाइब्रेरी रेफेंस जोड़ सकता हूं?
# ldd /usr/lib/python2.4/vendor-packages/fsimage.so
libfsimage.so.1.0 => /usr/lib/libfsimage.so.1.0
libxml2.so.2 => /lib/libxml2.so.2
libgcc_s.so.1 => /usr/sfw/lib/libgcc_s.so.1
libpthread.so.1 => /lib/libpthread.so.1
libz.so.1 => /lib/libz.so.1
libm.so.2 => /lib/libm.so.2
libsocket.so.1 => /lib/libsocket.so.1
libnsl.so.1 => /lib/libnsl.so.1
libc.so.1 => /lib/libc.so.1
libmp.so.2 => /lib/libmp.so.2
libmd.so.1 => /lib/libmd.so.1
# ./test
Traceback (most recent call last):
File "./test", line 26, in ?
import fsimage
ImportError: ld.so.1: isapython2.4: fatal: relocation error: file /usr/lib/python2.4/vendor-packages/fsimage.so: symbol mkdirp: referenced symbol not found
# LD_PRELOAD=/usr/lib/libgen.so ./test
Usage: ./test
स्वाभाविक रूप से, अगर मैं सूत्रों था आदि, मैं बस इसे फिर से लिंक कर सकते हैं, और "-lgen" जोड़ने के लिए, और यह एक निर्भरता के रूप में libgen.so जोड़ देगा।
लेकिन हैकर में एक अभ्यास के रूप में, मेरा कहना है कि मेरे पास कोई स्रोत नहीं है, और बस उस fsimage को जोड़ना चाहता था। इसलिए libgen.so भी लोड करना होगा। Elfedit/objcopy आदि का उपयोग करना, यह संभव नहीं है? मुझे नहीं लगता कि मैं "ld" का उपयोग करने के लिए उपयोग कर सकता हूं। इनपुट के रूप में, और एक नया लिखना। तो अतिरिक्त पुस्तकालय के साथ?
# elfdump /usr/lib/python2.4/vendor-packages/fsimage.so|grep NEEDED
[0] NEEDED 0x5187 libfsimage.so.1.0
[1] NEEDED 0x5152 libxml2.so.2
[2] NEEDED 0x5171 libgcc_s.so.1
stackoverflow पर पहले प्रयास, मुझ पर आसान जाना :)
मैं elfedit के साथ चलाने के लिए इसलिए मैं पहले तर्क के रूप में संपादित करना चाहता हूं और दूसरे के लिए एक नया नाम और कुछ भी नहीं होता है। मदद दिखाया गया है। मैं लिनक्स पर हूं हालांकि। – kaneda