clang ++(バージョン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$ 

編集:私はバグ追跡システムのチェックに失敗しました。これは実際にはLaunchpadで知られています。

編集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はサポートされなくなり、3.3は15.04で削除されました。だから私はそれを閉じることに投票しました。
user.dz 2015

2
@Sneetsher:ディストリビューションのバージョンとパッケージが最新のとき、私がこれを約2年前に提出したことを理解していますか?
Dirk Eddelbuettel、2015

ええ、そうです。質問が古くなるのをただ見ています。誰も答えようとしません。ただし、必要に応じて、バグレポートからの回避策を1つ追加して追加でき-i /path-to-std-headersます。それは後でここに来るでしょう。7票には魅力があるようです。:)
user.dz 2015

1
それは価値があるので、これは2016年の16.04の下ではまだ(デフォルトで)ビルドされません。悲しい。
Dirk Eddelbuettel 2016年

私はそれを試して、あなたに知らせます。
user.dz 2016年

回答:


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)$ 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.