2012-04-06 64 views
8

Tôi đã cài đặt clang và llvm từ nguồn, và đang cố gắng biên dịch một số mã C++ sử dụng các tính năng của tiêu chuẩn mới.Bao gồm tiêu đề C++ 11 với Clang/LLVM

Tôi nhận thấy rằng mặc dù việc sử dụng các phạm vi, ví dụ: for (i : vector) hoạt động tốt, tôi gặp sự cố (không thể tìm thấy tệp tiêu đề) khi tôi cần nhập tiêu đề, ví dụ: <unordered_set> hoặc <tuple>.

Tôi có cần sử dụng libC++ mới để sử dụng các tiêu đề này không, hoặc chỉ là một thay đổi xây dựng đơn giản mà tôi cần phải thực hiện? Tại thời điểm này tôi đã xây dựng clang và llvm vào một thư mục trong thư mục chính của tôi, và đang kêu gọi clang ++ từ đó.

Trả lời

4

Trong khi thư viện tiêu chuẩn đi kèm với các bản phân phối của trình biên dịch của bạn, khi bạn đang xây dựng nó cho mình, bạn vẫn cần phải xây dựng các thư viện chuẩn riêng của mình. Một số thành phần của nó có thể chỉ là tiêu đề, nhưng không phải tất cả các thành phần đó đều là.

Vì vậy, bạn cần ít nhất tải xuống thư viện, nếu không xây dựng nó. Clang có thể sử dụng libstdC++ của GCC, nhưng họ cũng có dự án libC++ của họ.

11

Xem http://clang.llvm.org/get_started.html.

Nếu bạn định làm việc với hỗ trợ Clang C++, bạn có thể cần phải nói cho nó cách tìm tiêu đề thư viện chuẩn C++ của bạn. Nếu Clang không thể tìm thấy hệ thống của bạn libstdC++ tiêu đề, hãy làm theo hướng dẫn sau:

  • gcc -v -x C++/dev/null -fsyntax chỉ để có được con đường.

  • Hãy tìm những bình luận "FIXME: tạm thời hack: đường dẫn mã hóa cứng" trong kêu vang/lib/Frontend/InitHeaderSearch.cpp và thay đổi dòng bên dưới để thêm con đường đó.

+0

Ok nhưng dường như nó chỉ là vấn đề với tiêu đề từ tiêu chuẩn mới. – zenna

+0

ah ha, có thể là vì g ++ 4.6 của tôi ở một nơi không chuẩn – zenna

Các vấn đề liên quan