मैं लिनक्स, जीसीसी में बूस्ट लाइब्रेरी का उपयोग कर रहा हूं। बूस्ट की स्थापना और निर्माण के बाद, मैंने पाया कि रेगेक्स और थ्रेड का उपयोग करने वाले प्रोग्राम साझा बूस्ट पुस्तकालयों का उपयोग करते हैं। मेरे उद्देश्यों के लिए, मुझे स्थिर लिंकिंग की आवश्यकता है। मैं लिंकिंग प्रकार कैसे बदल सकता हूं? क्या मुझे बूस्ट का पुनर्निर्माण करना चाहिए, या शायद मैं अपनी परियोजनाओं में कुछ स्थिरता को परिभाषित करके या कॉन्फ़िगरेशन फ़ाइलों को बढ़ावा देकर लिंकिंग प्रकार सेट कर सकता हूं?बूस्ट स्थैतिक लिंकिंग
उत्तर
बस अपने निर्माण आमंत्रण में -static
जोड़ें।
$ cat boost_formatted_time.cpp
#include <iostream>
#include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/date_time/posix_time/posix_time_io.hpp>
using namespace boost::posix_time;
using namespace std;
int main(int argc, char **argv) {
time_facet *facet = new time_facet("%d-%b-%Y %H:%M:%S");
cout.imbue(locale(cout.getloc(), facet));
cout << second_clock::local_time() << endl;
}
$ g++ -o /tmp/bft_dyn boost_formatted_time.cpp -lboost_date_time
$ g++ -static -o /tmp/bft_stc boost_formatted_time.cpp -lboost_date_time
$ ls -lh /tmp/bft_*
-rwxr-xr-x 1 edd edd 216K 2010-02-24 12:34 /tmp/bft_dyn
-rwxr-xr-x 1 edd edd 1.5M 2010-02-24 12:34 /tmp/bft_stc
$ /tmp/bft_dyn
24-Feb-2010 12:34:55
$ /tmp/bft_stc
24-Feb-2010 12:34:59
$
नोट कैसे स्थिर द्विआधारी 1.5MB जिन्हें डायनामिक रूप से जुड़ा हुआ संस्करण के लिए 216kb करने का विरोध किया है: यहाँ एक त्वरित उदाहरण सत्र है। डिफ़ॉल्ट बूस्ट पैकेज के साथ डेबियन परीक्षण पर किए गए सभी।
लिंकर को -Lpath/to/library/
निर्दिष्ट करें।
मुझे प्रोजेक्ट बिल्ड और लाइब्रेरी पथ के साथ कोई समस्या नहीं है, मुझे बस लिंकिंग प्रकार को बदलने की आवश्यकता है: डायनामिक से स्थिर तक। –
यह सही नहीं है - आपको '-स्टैटिक' की आवश्यकता है। '-L' लाइब्रेरी का स्थान देता है लेकिन लिंकिंग प्रकार नहीं। पूर्ण सत्र के लिए मेरा उत्तर देखें। –
- 1. लिंकिंग: स्थैतिक बनाम गतिशील
- 2. बूस्ट पायथन लिंकिंग
- 3. क्यूटी स्थैतिक लिंकिंग और तैनाती
- 4. बूस्ट। थ्रेड लिंकिंग - बूस्ट_थ्रेड बनाम बूस्ट_थ्रेड-एमटी
- 5. विजुअल स्टूडियो 2010 में गतिशील और स्थैतिक लिंकिंग और तैनाती
- 6. mingw में libwinpthread-1.dll की स्थैतिक लिंकिंग कैसे करें?
- 7. स्थिर लिंकिंग और गतिशील लिंकिंग
- 8. स्थैतिक लिंकिंग के साथ एक std :: थ्रेड शुरू करना सेगमेंटेशन गलती
- 9. स्टेटिक लिंकिंग फायदे
- 10. एंड्रॉयड स्टेटिक लिंकिंग गतिशील लिंकिंग बनाम glibc
- 11. Boost.Asio लिंकिंग त्रुटि
- 12. एक यूनिक्स वितरण कार्य पर स्थैतिक लिंकिंग करेगा लेकिन दूसरा नहीं?
- 13. अजाक्स गहरी लिंकिंग?
- 14. लिंकिंग .Net Assemblies
- 15. लिंकिंग आर और जूलिया?
- 16. आईफोन पर कमजोर लिंकिंग
- 17. स्टेटिक/डायनामिक रनटाइम लिंकिंग
- 18. मेकफ़ाइल, संकलन और लिंकिंग
- 19. एक पूर्व लिंकिंग फ़ाइल
- 20. एक्सकोड लिंकिंग (एलडी)
- 21. "वृद्धिशील लिंकिंग" क्या है?
- 22. कमजोर लिंकिंग सी फ़ंक्शन
- 23. स्थैतिक?
- 24. बूस्ट-पायथन हैलो वर्ल्ड
- 25. स्थैतिक घोषणा गैर स्थैतिक घोषणा
- 26. बूस्ट
- 27. बूस्ट
- 28. बूस्ट
- 29. बूस्ट
- 30. बूस्ट
मैं कमांड लाइन से जीसीसी नहीं चलाता, मैं एक्लिप्स सीडीटी का उपयोग कर रहा हूं। संभावित रूप से -स्टैटिक स्विच परियोजना सेटिंग्स से लिंकर को पास किया जा सकता है, मैं इस तरह से खोजने की कोशिश करूंगा। धन्यवाद। –
क्या 'लाइब्रेरी' का सभी पुस्तकालयों पर प्रभाव पड़ता है, जब 1 से अधिक लाइब्रेरी में शामिल होता है? – mrgloom