2012-12-03 9 views
6

के साथ libstdC++ को स्थिर रूप से कैसे लिंक करें मैं एसटीएल के स्रोत को पढ़ने के साथ सी ++ गहराई से सीखने की कोशिश कर रहा हूं और साथ ही इसे डिबगिंग कर रहा हूं, इसलिए मैं libstdc++ को अपने प्रोग्राम में स्थिर रूप से लिंक करना चाहता हूं, और यह g++ का उपयोग करके ठीक काम करता है। हालांकि, मैं llvm में clang++ के साथ एक ही चीज़ कैसे प्राप्त कर सकता हूं?clang ++

एक और तरीके से, सवाल यह है कि clang++-static-libgcc के बराबर क्या है?

Makefile मैं

CXX=g++ 
CC=g++ 
LDFLAGS=-g -O0 -static-libgcc 
CFLAGS=-O0 -Wall 
CXXFLAGS=$(CFLAGS) 
+0

मुझे नहीं लगता कि स्थिर जोड़ने आपको क्या चाहिए है। पुस्तकालय के लिए आपको डीबग जानकारी की आवश्यकता है, इससे कोई फर्क नहीं पड़ता कि यह स्थिर या गतिशील है या नहीं। आप विभिन्न लिनक्स वितरण में विभिन्न स्थानों पर इसे पा सकते हैं; कुछ में डीबग जानकारी के साथ स्थिर लाइब्रेरी है, कुछ लोगों ने कहीं साझा साझा लाइब्रेरी नहीं है, कुछ ने साझा लाइब्रेरी के लिए जानकारी डीबग की है (उदा। डेबियन/उबंटू आमतौर पर ऐसा करते हैं)। –

+0

मैंने जी ++, और स्थैतिक लिंकिंग कार्यों में कोशिश की है, और मुझे लगता है कि ऐसा इसलिए है क्योंकि मेरा libstdC++। LibstdC++। Dylib है जबकि एक स्ट्रिप नहीं किया गया है। क्या आपका मतलब है कि मुझे एक साझा लाइब्रेरी मिलनी चाहिए जो छीन नहीं है? – Haocheng

उत्तर

3

झंडा आप देख रहे हैं का उपयोग कर रहा है, दोनों जीसीसी और बजना में है: -static-libstdc++

+1

यह एक चेतावनी देता है "संकलन के दौरान अप्रयुक्त तर्क: '-स्टैटिक-libstdC++'" क्लैंग 4.2 में। – vitaut

+1

बजना ++ संस्करण 4.2.1 CentOS 7 पर कहते हैं 'बजना: चेतावनी: तर्क संकलन के दौरान अप्रयुक्त: 'स्थैतिक-libstdC++'' और स्थिर जोड़ने नहीं होती है - वहाँ इसे ठीक करने के लिए किसी भी तरह है? – scrutari

+1

यह एक लिंक-टाइम ध्वज है, संकलन-समय ध्वज नहीं। यदि आप सवाल देखते हैं, तो '-static-libgcc' ध्वज' एलडीएफएलजीएस 'चर में जोड़ा जाता है, जहां यह भी जोड़ा जाना चाहिए। –

संबंधित मुद्दे