मैं कुछ कोड को बढ़ावा देने के लिए संकलन करने की कोशिश कर रहा हूंनिर्भरताएँ जिन्हें मैं एक गतिशील साझा पुस्तकालय के रूप में उपयोग करना चाहता हूं, लेकिन बिना किसी बढ़ावा निर्भरता (आवश्यकता के रूप में कोई स्थापना नहीं)। मैं इसके बारे में कितना उत्सुक हूं?
मैं अपना कोड संकलित कर रहा हूं:
g++ -Wall -fPIC -o myclass.o -c myclass.cpp
g++ -shared -Wl,-soname,myclass.so.1 -o lib/myclass.so.1 myclass.o -lc
हालाँकि, निर्मित लाइब्रेरी कुछ निर्भरता को बढ़ाती है, जैसे कि
ldd lib/myclass.so.1
उत्पादन का उत्पादन करता है:
linux-vdso.so.1 (0x00007fffda9df000)
libboost_system.so.1.60.0 => /usr/lib/libboost_system.so.1.60.0 (0x00007f934e776000)
libboost_serialization.so.1.60.0 => /usr/lib/libboost_serialization.so.1.60.0 (0x00007f934e538000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f934e1b6000)
libm.so.6 => /usr/lib/libm.so.6 (0x00007f934deb0000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007f934db0f000)
/usr/lib64/ld-linux-x86-64.so.2 (0x000055802a452000)
libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007f934d8f9000)
librt.so.1 => /usr/lib/librt.so.1 (0x00007f934d6f0000)
libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007f934d4d3000)
मुझे क्या बदलना चाहिए g++
सभी बूस्ट निर्भरता को .so फ़ाइल में पैक करने के लिए कॉल करें?
उत्तर:
उत्तर № 1 के लिए 1आप किसी अन्य .so के अंदर "t बस" एक "।" कर सकते हैं। आपको साझा पुस्तकालयों के बजाय स्थैतिक पुस्तकालयों के साथ लिंक करना होगा।
अधिकांश लिनक्स वितरण में एक वैकल्पिक "विकास" सबपेक शामिल है जिसमें साझा पुस्तकालयों के सांख्यिकीय रूप से जुड़े संस्करण शामिल हैं।
आपको उस पैकेज को स्थापित करना होगा, और फिर पूरी तरह से बदलना होगा कि आप अपनी खुद की लाइब्रेरी कैसे लिंक करें उदाहरण के लिए, इसके साथ लिंक करना
-lboost_system
आपको इसे स्पष्ट रूप से बदलना होगा"/usr/lib64/libboost_system.a" के विरुद्ध लिंक, या जहाँ भी libboost_system.a स्थापित है। इसके बजाय, कुल्ला, दोहराना, और न केवल बढ़ावा पुस्तकालयों के लिए आप सीधे के साथ लिंक, लेकिन अन्य सभी बढ़ावा पुस्तकालयों के साथ उन पुस्तकालयों खुद के साथ लिंक, आदि ...
अपने लिनक्स वितरण के दस्तावेज़ों के बारे में जानकारी के लिए परामर्श करें कि साझा पुस्तकालयों के सांख्यिकीय रूप से जुड़े संस्करण कहाँ और कैसे पैक किए गए हैं।