Đ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ó -dev
gó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
@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
—
user.dz
-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. :)
Đố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