जीसीसी में, मैं परिपत्र निर्भरताओं वाले पुस्तकालयों के साथ लिंकिंग समस्याओं को हल करने के लिए लिंकर झंडे -Wl,--start-group
और -Wl,--end-group
का उपयोग कर सकता हूं। मैं क्लैंग के साथ ऐसा करना चाहता हूं, लेकिन ऐसा लगता है कि यह सुविधा dropped in lld version 3.2 थी। मैं यह कैसे करुं?ऑर्डर से स्वतंत्र क्लैंग के साथ स्थिर पुस्तकालयों को जोड़ना
उत्तर
LLVM 3.2 राज्य कि
LLVM-ld और LLVM-ठूंठ हटा दिया गया है की release notes, LLVM-ld कार्यक्षमता आंशिक रूप से LLVM-लिंक से बदला जा सकता है | ऑप्ट | {llc | के रूप में, llc -filetype = obj} | एलडी, या पूरी तरह से Clang द्वारा प्रतिस्थापित किया गया।
डिफ़ॉल्ट क्लैंग सिस्टम लिंकर का उपयोग करने लगता है। स्टार्ट-समूह और -Wl, - - अंत समूह जीसीसी के साथ के रूप में
$ clang --version
clang version 3.2 (branches/release_32 170558)
...
$ clang -Wl,--verbose
GNU ld (GNU Binutils; devel:gcc/openSUSE_12.3) 2.24.0.20140403-196
...
यह पता चलता है कि आप -Wl उपयोग कर सकते हैं,: यह यह जीएनयू ld का उपयोग करता है, उदाहरण के लिए लिनक्स पर है।
यह मामला है। ऐप्पल का एलडी उपकरण --स्टार्ट-समूह झंडे का समर्थन नहीं करता है, लेकिन यह परिपत्र निर्भरताओं के बारे में भी परवाह नहीं करता है। – Mokosha
मैं परिपत्र निर्भरताओं का प्रशंसक नहीं हूं :) लेकिन here कुछ कहते हैं कि वे कुछ पुस्तकालयों को दो बार जोड़कर इन मामलों को संभालते हैं। मैंने कोशिश नहीं की है लेकिन यह आपके कोड के पदचिह्न को बढ़ा सकता है।
$(CC) -o myApp -lfoo -lbar -lfoo
मुझे नहीं पता कि यह क्लैंग के साथ काम करता है लेकिन यह एक शॉट के लायक हो सकता है।
बेस्ट समाधान परिपत्र निर्भरता को दूर किया जा के रूप में यह आप भविष्य में और अधिक समस्याएं उत्पन्न होगा होगा।
कोड आकार को कभी भी बढ़ाना नहीं चाहिए :) – mlvljr
मुझे एक क्यूटी सी ++ प्रोजेक्ट का उपयोग कर एक कस्टम क्लैंग कंपाइलर से जोड़ने में एक ही समस्या थी।
समस्या पता चला कि क्यूटी बजना (ग संकलक) का उपयोग किया गया था बल्कि बजना से होने की ++ (ग ++ संकलक)। QT परियोजना (QMAKE_CXX = clang ++ सेटिंग) में क्लैंग के बजाय कंपाइलर को क्लैंग ++ के रूप में परिभाषित करके परियोजना सफलतापूर्वक लिंक की गई है।
जैसा कि मैं इसे समझता हूं, वही जीसीसी और जी ++ के लिए सच है।
- 1. संयोजन स्थिर पुस्तकालयों
- 2. स्थिर पुस्तकालयों को एकल
- 3. स्थिर पुस्तकालयों के साथ जीसीसी लिंकिंग
- 4. स्थिर स्थिर पुस्तकालयों वाले स्थिर पुस्तकालयों को जोड़ने के लिए सही प्रक्रिया क्या है?
- 5. समर्थन पुस्तकालयों v7, v13 को ग्रेडल के साथ जोड़ना
- 6. स्थिर पुस्तकालयों के .NET समकक्ष?
- 7. एंड्रॉइड प्रोजेक्ट में समर्थन पुस्तकालयों को जोड़ना
- 8. एलएलवीएम जेआईटी कोड को स्टेटिक एलएलवीएम पुस्तकालयों से जोड़ना?
- 9. साझा पुस्तकालयों बनाम स्थिर पुस्तकालयों के लिए लोडिंग समय
- 10. जोड़ना अजगर पुस्तकालयों datalab पर्यावरण
- 11. स्थिर पुस्तकालयों के साथ विजुअल स्टूडियो 2012 लिंक त्रुटियां
- 12. एक स्थिर lib कॉन्फ़िगरेशन में क्लैंग sanitizers के साथ एक autotools परियोजना को कॉन्फ़िगर करें?
- 13. एक "12" स्थिर पुस्तकालयों को एक
- 14. बिल्डिंग ओपनसीवी स्थिर पुस्तकालयों के रूप में
- 15. स्थिर और साझा पुस्तकालयों के बीच अंतर?
- 16. क्या मैं साझा पुस्तकालयों को जोड़ते समय जीसीसी को स्थिर पुस्तकालयों को अनदेखा कर सकता हूं?
- 17. सी # कक्षा पुस्तकालय के लिए पुस्तकालयों को स्थिर रूप से कैसे लिंक करें?
- 18. क्या स्थिर लाइब्रेरी को दो बार डुप्लिकेशंस में जोड़ना है?
- 19. लिंक करना स्थिर पुस्तकालयों, कि शेयर एक और स्थिर पुस्तकालय
- 20. एक संकलक एक और के साथ संगत के साथ बनाया स्थिर सी पुस्तकालयों हैं?
- 21. मानचित्र के एक स्थिर बटन ओवरटॉप को जोड़ना
- 22. क्लैंग जीसीसी पुस्तकालयों का उपयोग करने लगता है
- 23. exe और dll एक ही स्थिर पुस्तकालयों
- 24. क्लैंग
- 25. एक पायथन फ़ाइल ऑर्डर में फ़ंक्शन परिभाषा बनाएं स्वतंत्र
- 26. क्लैंग
- 27. जोड़ना "ओपन के साथ ..." #
- 28. एंगुलरजेएस (एकाधिक स्वतंत्र ऐप्स) के साथ पोर्टल टाइप एप्लिकेशन
- 29. क्लैंग के स्थिर विश्लेषक के साथ एक चर का ट्रैक कैसे रखें?
- 30. क्लैंग के साथ -जीपी के लिए वैकल्पिक?
https://en.wikipedia.org/wiki/Technical_debt –
सभी libs (किसी भी क्रम में) दो बार सूचीबद्ध करें: '-la -lb ...- lx -la -lb ... -lx' (सर्वोत्तम एक स्क्रिप्ट के साथ किया गया) – mlvljr
@mlvljr यह पर्याप्त हो सकता है या नहीं भी हो सकता है। – user1225999