clang ++ (sürüm 3.3) başlıklardan yoksun


9

Bu tuhaf görünüyor. Basit bir C ++ programına katılın

#include <cmath>
#include <iostream>

int main(void) {

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

}

g++(4.8) ile iyi geçen ancak clang++(3.3) ile derlenemeyen .

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$ 

Açıkça belirgin bir şeyi kaçırdığımı sanıyorum.

Ve ilgili -devpaketim var:

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$ 

Düzenleme: Hata Takip Sistemini kontrol edememiştim, bu aslında Launchpad'de biliniyor .

Düzenleme 2: Ubuntu 16.10'da nihayet çalışır:

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 sürümünü kullanarak .


Hata raporunun SABİT OLMADIĞINI görüyorum, 13.10 artık desteklenmiyor ve 3.3, 15.04'te kaldırıldı. Ben de kapatmak için oy verdim.
user.dz

2
@Sneetsher: Yaklaşık iki yıl önce bu dağıtım sürümü ve paketi güncel olduğunda bunu yaptığımı anlıyor musunuz?
Dirk Eddelbuettel

Evet yaparım. Sadece sorunun yaşlandığını görüyorum. Kimse cevap vermeyecek. Ancak isterseniz, eklediğiniz hata raporundan bir çözüm yazabilirsiniz -i /path-to-std-headers. Bu daha sonra buraya gelecek. 7 oy bir cazibe var gibi görünüyor. :)
user.dz

1
Buna değer için, 2016'da 16.04 altında hala (varsayılan olarak) inşa edilmiyor. Üzgün.
Dirk Eddelbuettel

Bir deneyeceğim ve size bildireceğim.
user.dz

Yanıtlar:


1

(Sonunda) Ubuntu 16.10'da çalışır:

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)$ 
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.