Tôi muốn sử dụng C++ 11 hoặc C++ 14 với clang/clang ++ trên CentOS 7. Làm thế nào để xây dựng môi trường xây dựng này?Làm thế nào để xây dựng libcxx và libcxxabi bằng clang trên CentOS 7
Trả lời
Bài viết này dạy cách xây dựng môi trường xây dựng C++ 11 trên CentOS 7: Repel EPEL của RHEL cung cấp gói Clang, nhưng không có gói thư viện C++. Vì vậy, những bộ phận này là một chút rắc rối để được xây dựng bằng tay. Các thư viện C++ tùy chỉnh cho Clang là libC++ (libcxx) [1]. Sau đó, libcxx cũng cần thư viện ABI, libC++ abi (libcxxabi) [2]. Thật không may, hai thư viện này có một vấn đề phụ thuộc vòng tròn. Để phá vỡ vấn đề phụ thuộc vòng tròn, libC++ có thể được xây dựng mà không cần liên kết libC++ abi. Sau đó, với libC++ này, chúng ta có thể xây dựng libC++ abi liên kết libC++. Cuối cùng, với libC++ abi, chúng ta có thể xây dựng một libC++ mới liên kết libC++ abi.
Các kêu vang, libC++, và libC++ bước xây dựng môi trường abi được đưa ra trong những điều sau đây:
Thêm EPEL repo RHEL của. Mở liên kết sau và tìm phần "Làm cách nào tôi có thể sử dụng các gói bổ sung này?" https://fedoraproject.org/wiki/EPEL
Tìm gói epel cho phiên bản CentOS của bạn. Ví dụ::sudo rpm -i https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
Cài đặt Subversion để nhận libcxx và libcxxabi mới nhất.
sudo yum install svn
Cài đặt Clang và llvm-devel (với llvm-config).
sudo yum install clang llvm-devel
Cài đặt cmake.
cd /usr/local wget https://cmake.org/files/v3.5/cmake-3.5.2-Linux-i386.sh sudo chmod 755 cmake-3.5.2-Linux-i386.sh sudo ./cmake-3.5.2-Linux-i386.sh # Check cmake is in /usr/local/bin.
Vòng đầu tiên để xây dựng libcxx mà không cần libcxxabi.
# Get libcxx. svn co http://llvm.org/svn/llvm-project/libcxx/trunk libcxx cd libcxx # It is not recommended to build libcxx in the source root directory. # So, we make a tmp directory. mkdir tmp cd tmp # Specifying CMAKE_BUILD_TYPE to Release shall generate performance optimized code. # The CMAKE_INSTALL_PREFIX changes the install path from the default /usr/local to /usr. cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ .. sudo make install cd .. rm tmp -rf cd ..
Xây dựng libcxxabi bằng libC++.
# Get libcxxabi. svn co http://llvm.org/svn/llvm-project/libcxxabi/trunk libcxxabi cd libcxxabi mkdir tmp cd tmp cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DLIBCXXABI_LIBCXX_INCLUDES=../../libcxx/include .. sudo make install cd ../..
Vòng 2 để xây dựng libcxx với libcxxabi.
cd libcxx mkdir tmp cd tmp # This time, we want to compile libcxx with libcxxabi, so we have to specify LIBCXX_CXX_ABI=libcxxabi and the path to libcxxabi headers, LIBCXX_LIBCXXABI_INCLUDE_PATHS. cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DLIBCXX_CXX_ABI=libcxxabi -DLIBCXX_CXX_ABI_INCLUDE_PATHS=../../libcxxabi/include .. sudo make install
Viết chương trình thử nghiệm C++.
// t.cpp #include <iostream> using namespace std; int main() { cout << "Hello world!" << endl; }
Kiểm tra bản dịch C++ bằng clang ++.
# -std specifies the C++ standard. -stdlib specifies the C++ library you want to use with clang/clang++. -lc++abi is necessary, because the new LD (linker and loader) on CentOS 7 doesn't allow indirect library linking. clang++ -std=c++11 -stdlib=libc++ -lc++abi t.cpp ./a.out
Tài liệu tham khảo:
[1] http://libcxx.llvm.org/
[2] http://libcxxabi.llvm.org/
Điều này thực sự hữu ích, tôi muốn bạn có thể chia sẻ một giải thích chi tiết hơn về lý do tại sao các bước này là cần thiết. –
Ngoài ra, FWIW, dường như không hoạt động trên Fedora 20. :( –
Xin lỗi, tôi không phải là chuyên gia giải thích mọi thứ chính xác. Tuy nhiên, các bước này chỉ hoạt động trên CentOS 7. Tôi sẽ cố gắng thêm một số nhận xét có thể Tôi có thể: –
- 1. Lỗi Xây dựng Clang
- 2. Làm thế nào để làm một dòng lệnh xây dựng bằng cách sử dụng Delphi 7?
- 3. Cách bị xử phạt để xây dựng libC++ cho clang trên Linux là gì?
- 4. Làm thế nào để chạy thử nghiệm trên CentOS 7 với Travis-CI?
- 5. Làm thế nào để xây dựng qpdf trên Windows?
- 6. Làm thế nào để xây dựng webpack trên heroku?
- 7. Beanstalkd cho CentOs 7
- 8. Làm thế nào để xây dựng HttpPostedFileBase?
- 9. Không cài đặt MySql trên CentOS 7
- 10. làm thế nào để cài đặt filezilla trên CentOS?
- 11. Làm thế nào để cài đặt SWIG trên Linux centos
- 12. Làm thế nào để xây dựng bằng cách sử dụng MSBuild và Delphi XE2
- 13. Không thể xây dựng Google Test với Visual Studio 2015 và Clang 3.7 bằng Microsoft CodeGen
- 14. Xây dựng gỡ lỗi của Clang được xây dựng với MinGW trên Windows 10 không thể chạy
- 15. Làm thế nào để xây dựng openmpi với homebrew và gcc-4.9?
- 16. Làm thế nào để xây dựng một RESTful API?
- 17. Làm thế nào để xây dựng và cài đặt gcc với rpath tích hợp?
- 18. Làm thế nào để xây dựng chương trình thúc đẩy đơn giản trên Mac OS (Lion)
- 19. Làm thế nào để tạm thời thay thế tham chiếu NuGet bằng địa chỉ xây dựng
- 20. xây dựng một trình phân tích cú pháp với clang
- 21. Làm thế nào để xây dựng Celestia cho Android?
- 22. gulp-jshint: Làm thế nào để không xây dựng?
- 23. Làm thế nào để xây dựng 32 bit python 2,6 trên 64bit Linux?
- 24. Làm thế nào để xây dựng cho JDK 1.1.8?
- 25. Làm thế nào để xây dựng qt ra khỏi nguồn
- 26. Không thể mở luồng trên file_put_contents bằng PHP trên CentOS 7
- 27. Làm thế nào để xây dựng XmlNodes từ XmlReader
- 28. Làm thế nào để dừng xây dựng trong Visual Studio?
- 29. Xây dựng Mã iPhone bằng cách sử dụng xcodebuild và chạy Máy phân tích tĩnh LLVM/Clang
- 30. Sử dụng quét-xây dựng của Clang với scons và C++ 11
Nếu bạn không muốn xây dựng bất cứ điều gì, bạn có thể sử dụng C++ 11 ([mà không cần '' ] (http://stackoverflow.com/q/12530406/1398841)) với Clang 3.4.2 và cài đặt sẵn libstdC++ trên CentOS 7. Bật [EPEL] (https://fedoraproject.org/wiki/EPEL) lưu trữ và 'yum install clang' để nhận [Clang 3.4.2] (https://centos.pkgs.org/7/epel-x86_64/clang-3.4.2-8.el7.x86_64.rpm.htm l). –
phoenix