clang ++ (phiên bản 3.3) thiếu tiêu đề


9

Điều này có vẻ kỳ lạ. Tham gia một chương trình C ++ đơn giản

#include <cmath>
#include <iostream>

int main(void) {

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

}

vượt qua tốt với g++(4.8) nhưng không biên dịch được với 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$ 

Tôi nghi ngờ tôi đang thiếu một cái gì đó rõ ràng.

Và tôi có -devgói tương ứng:

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$ 

Chỉnh sửa: Tôi đã không kiểm tra Hệ thống theo dõi lỗi, điều này thực tế đã được biết đến tại Launchpad .

Chỉnh sửa 2: Trong Ubuntu 16.10, cuối cùng nó cũng hoạt động:

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

sử dụng clang++phiên bản 3.8.1.


Tôi thấy báo cáo lỗi KHÔNG CỐ ĐỊNH, 13.10 không được hỗ trợ nữa và 3.3 được xóa trong 15.04. Vì vậy, tôi đã bỏ phiếu để đóng nó.
user.dz

2
@Sneetsher: Bạn có hiểu rằng tôi đã nộp đơn này gần hai năm trước khi phiên bản phân phối và gói đó là hiện tại không?
Dirk Eddelbuettel

Yeah tôi làm. Tôi chỉ thấy câu hỏi bị già đi. Tôi không có ai sẽ trả lời. Nhưng nếu muốn, bạn có thể viết một đề cập đến cách giải quyết từ báo cáo lỗi thêm -i /path-to-std-headers. Điều đó sẽ đến sau này ở đây. 7 phiếu dường như có một số thu hút. :)
user.dz

1
Đối với những gì đáng giá, điều này vẫn không được xây dựng (theo mặc định) vào năm 2016 dưới 16.04. Buồn.
Dirk Eddelbuettel 04/11/2016

Tôi sẽ thử nó và cho bạn biết.
user.dz

Câu trả lời:


1

Nó (cuối cùng) hoạt động trong 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)$ 
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.