2012-02-08 8 views
19

द्वारा आवश्यक फ़ाइल को c12+ में bits/c++config.h नामक कोई फ़ाइल नहीं है, जिसमें cstring हेडर फ़ाइल द्वारा आवश्यक निर्देशिका शामिल है। लेकिन जब मैं हेडर cstring हेडर और g++ के साथ संकलित करता हूं, तो यह मुझे त्रुटि नहीं देता है। समस्या तब हुई जब मैंने प्रोग्राम को निम्नलिखित तरीके से clang++ कंपाइलर के साथ संकलित करने का प्रयास किया।g ++ 4.6 अंक संख्या <बिट्स/सी ++ config.h> हेडर cstring

$clang++ -cc1 -I/usr/include -I/usr/include/c++/4.6.1 -I/usr/lib/gcc/i686-linux-gnu/4.6.1 -I/usr/include/i386-linux-gnu -I opt_149739_build/include hello.cpp 

In file included from /media/space/hello.cpp:2: 
In file included from /media/space/opt_149739_build/include/clang/Driver/Driver.h:13: 
In file included from /media/space/opt_149739_build/include/clang/Basic/Diagnostic.h:17: 
In file included from /media/space/opt_149739_build/include/clang/Basic/DiagnosticIDs.h:18: 
In file included from /media/space/opt_149739_build/include/llvm/ADT/StringRef.h:14: 
/usr/include/c++/4.6.1/cstring:42:10: fatal error: 'bits/c++config.h' file not found 
#include <bits/c++config.h> 

मैं उबंटू 11.04

पर जी ++ 4.6.1 का उपयोग कर रहा क्या गड़बड़ी हुई?

+0

अधिक जानकारी प्रदान कर सकता है, उदाहरण के लिए: जीसीसी का कौन सा संस्करण आप उपयोग करते हैं? किस ओएस पर? और आपकी जीसीसी कमांड लाइन क्या है? – Coren

उत्तर

29

फ़ाइल bits/c++config.h प्लेटफ़ॉर्म विशिष्ट वर्तमान कंपाइलर के सापेक्ष शामिल है, इसलिए यह किसी अन्य निर्देशिका में छिपा हुआ है, जिसे डिफ़ॉल्ट रूप से g ++ द्वारा खोजा जाता है, लेकिन ऐसा लगता है कि क्लैंग ++ द्वारा नहीं।

मेरी मशीन में, locate c++config.h चल देता है निम्नलिखित (प्रासंगिक) फ़ाइलें:

/usr/include/c++/4.6/i686-linux-gnu/64/bits/c++config.h 
/usr/include/c++/4.6/i686-linux-gnu/bits/c++config.h 

पहले एक 64-बिट और 32-बिट के लिए एक दूसरे के लिए ही है।

तो बस -I/usr/include/c++/4.6/i686-linux-gnu या -I/usr/include/c++/4.6/i686-linux-gnu/64 या जो भी आपको अपने प्लेटफ़ॉर्म के लिए आवश्यक है, जोड़ें।

+0

हाँ मुझे पता चला कि यह वही निर्देशिका में है जो आपको मिला। धन्यवाद –

+1

यदि आपके पास अपने आर्किटेक्चर के लिए उपयुक्त C++ config.h नहीं है, तो libstdC++ - अपने भंडार से डेवेल इंस्टॉल करें। कुछ मामलों में –

+0

यह पर्याप्त नहीं हो सकता है: कभी-कभी आपको आवश्यकता होती है- I/usr/include/C++/4.6/i686-linux-gnu/C++/4.6 मैं उपयोग करता हूं- I/usr/include/i386-linux-gnu/C++/4.7/मेरी मशीन और जीसीसी के 4.7 संस्करण के लिए और यह सब काम करता है –

0

यह संबंधित हेडर्स फ़ाइलों को कैसे खोजा जा सकता है उससे संबंधित हो सकता है।

आपको फेडोरा 15, 4 महीने पहले, here के लिए इसे ठीक करने का नमूना पैच मिलेगा।

अधिक जानकारी के लिए यह red hat bugzilla post देखें।

+0

क्लैंग स्थापित करते समय मैंने समस्या का समाधान करने के लिए आवश्यक निर्देशिकाओं को शामिल करने के लिए Frontend/InitHeaderSearch.cpp फ़ाइल संपादित की। फिर भी मुझे यह त्रुटि मिली। अभी के लिए, मैंने इस मुद्दे को हल करने के लिए अपने CMakeLists.txt में सभी आवश्यक पथ जोड़े हैं। –

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