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.