क्लैंग ++ (संस्करण 3.3) में हेडर का अभाव है


9

यह अजीब लगता है। एक साधारण C ++ प्रोग्राम लें

#include <cmath>
#include <iostream>

int main(void) {

    std::cout << "Square root of 9 is " << sqrt(9) << std::endl;

}

जो g++(4.8) के साथ ठीक गुजरता है, लेकिन clang++(3.3) के साथ संकलन करने में विफल रहता है ।

edd@don:/tmp$ g++ -o cmath cmath.cpp 
edd@don:/tmp$ ./cmath 
Square root of 9 is 3
edd@don:/tmp$ clang++ -o cmath cmath.cpp 
In file included from cmath.cpp:2:
/usr/lib/gcc/i686-linux-gnu/4.8/../../../../include/c++/4.8/cmath:41:10: \
       fatal error: 
      'bits/c++config.h' file not found
#include <bits/c++config.h>
         ^
1 error generated.
edd@don:/tmp$ 

मुझे संदेह है कि मुझे कुछ स्पष्ट रूप से याद आ रहा है।

और मेरे पास प्रासंगिक -devपैकेज है:

edd@don:/tmp$ COLUMNS=72 dpkg -l | grep "clang\|llvm"
ii  clang-3.3      1:3.3-5ubunt i386         C, C++ and Objective-C compiler (
ii  libclang-commo 1:3.3-5ubunt i386         clang library - Common developmen
ii  libclang-commo 1:3.2repack- i386         clang library - Common developmen
ii  libclang1      1:3.2repack- i386         clang library
ii  libclang1-3.3  1:3.3-5ubunt i386         clang library
ii  libllvm3.1:i38 3.1-2ubuntu2 i386         Low-Level Virtual Machine (LLVM),
ii  libllvm3.2:i38 1:3.2repack- i386         Low-Level Virtual Machine (LLVM),
ii  libllvm3.3:i38 1:3.3-5ubunt i386         Low-Level Virtual Machine (LLVM),
ii  llvm-3.3       1:3.3-5ubunt i386         Low-Level Virtual Machine (LLVM)
ii  llvm-3.3-dev   1:3.3-5ubunt i386         Low-Level Virtual Machine (LLVM),
ii  llvm-3.3-runti 1:3.3-5ubunt i386         Low-Level Virtual Machine (LLVM),
edd@don:/tmp$ 

संपादित करें: मैं बग ट्रैकिंग सिस्टम की जांच करने में विफल रहा था, यह वास्तव में लॉन्चपैड में जाना जाता है

संपादित 2: Ubuntu 16.10 में, यह अंत में काम करता है:

edd@max:~/src/progs/C++(master)$ clang++ -o cmath cmath.cpp 
edd@max:~/src/progs/C++(master)$ ./cmath 
Square root of 9 is 3
edd@max:~/src/progs/C++(master)$ 

clang++संस्करण 3.8.1 का उपयोग करना ।


मुझे बग रिपोर्ट दिखाई नहीं दे रही है, 13.10 अब समर्थित नहीं है, और 15.04 में 3.3 हटा दिया गया है। इसलिए मैंने इसे बंद करने के लिए मतदान किया।
user.dz

2
@ स्नेचर: आप समझते हैं कि मैंने यह लगभग दो साल पहले दायर किया था जब वितरण संस्करण और पैकेज चालू थे ?
डिर्क एडल्डबुलेटेल

हाँ मैं करता हूँ। मैं देख रहा हूं कि यह सवाल दूर हो गया है। मैं कोई भी जवाब देने वाला नहीं हूं। लेकिन अगर आप चाहें, तो आप बग रिपोर्ट से वर्कअराउंड का उल्लेख कर सकते हैं जो जोड़ते हैं -i /path-to-std-headers। जो किसी भी बाद में यहाँ आ जाएगा। 7 मतों में कुछ आकर्षण है। :)
user.dz

1
जो इसके लायक है उसके लिए अभी भी 2016 में 16.04 के तहत निर्माण (डिफ़ॉल्ट रूप से) नहीं होता है। उदास।
डर्क एडल्डबुलेटेल

मैं इसे आजमाऊंगा और आपको बताऊंगा।
user.dz

जवाबों:


1

यह (अंतिम बार) Ubuntu 16.10 में काम करता है:

edd@max:~/src/progs/C++(master)$ cat cmath.cpp 

#include <cmath>
#include <iostream>

int main(void) {

    std::cout << "Square root of 9 is " << sqrt(9) << std::endl;

}
edd@max:~/src/progs/C++(master)$ clang++ -o cmath cmath.cpp 
edd@max:~/src/progs/C++(master)$ ./cmath 
Square root of 9 is 3
edd@max:~/src/progs/C++(master)$ 
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.