clang ++ (versione 3.3) manca di intestazioni


9

Sembra strano. Prendi un semplice programma C ++

#include <cmath>
#include <iostream>

int main(void) {

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

}

che va bene con g++(4.8) ma non riesce a compilare con 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$ 

Sospetto che mi manchi qualcosa di palesemente ovvio.

E ho il -devpacchetto pertinente :

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$ 

Modifica: non ero riuscito a controllare il sistema di tracciamento dei bug, questo è di fatto noto al Launchpad .

Modifica 2: In Ubuntu 16.10, finalmente funziona:

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)$ 

utilizzando la clang++versione 3.8.1.


Vedo che la segnalazione di bug NON FISSA, 13.10 non è più supportata e 3.3 è stato rimosso in 15.04. Quindi ho votato per chiuderlo.
user.dz,

2
@Sneetsher: Capisci che l'ho archiviato quasi due anni fa quando quella versione e pacchetto di distribuzione erano aggiornati ?
Dirk Eddelbuettel,

Sì lo faccio. Vedo solo che la domanda è invecchiata. Nessuno risponderà. Ma se vuoi, puoi scrivere una menzione alla soluzione alternativa dalla segnalazione di bug che aggiunge -i /path-to-std-headers. Questo verrà dopo qui. 7 voti sembrano avere qualche attrazione. :)
user.dz,

1
Per quello che vale, questo non si sviluppa (per impostazione predefinita) nel 2016 con il 16.04. Triste.
Dirk Eddelbuettel,

Ci proverò e ti farò sapere.
user.dz,

Risposte:


1

Funziona (finalmente) in 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)$ 
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.