Cách cài đặt LLVM và Clang trên CentOS 6

Cách cài đặt LLVM và Clang trên CentOS 6

LLVM là một cơ sở hạ tầng trình biên dịch mã nguồn mở. LLVM được bắt đầu vào năm 2000 và được Apple sử dụng và sửa đổi rộng rãi từ năm 2005. Clang là trình biên dịch C, C ++, Objective-C và Objective-C ++ hoạt động với hệ thống LLVM. Clang được Apple bắt đầu vào năm 2007 và kể từ đó Google và Intel đã tham gia vào quá trình phát triển liên tục của mình.

Các nhà phát triển của Clang tuyên bố rằng so với GCC, nó biên dịch nhanh hơn, sử dụng ít bộ nhớ hơn, mang lại chẩn đoán thân thiện với người dùng hơn trong quá trình biên dịch và tương thích với GCC.

CentOS theo sự phát triển của Red Hat Enterprise Linux (RHEL). RHEL phấn đấu trở thành một nền tảng máy chủ ổn định, điều đó có nghĩa là nó không vội vàng bao gồm các phiên bản mới nhất của mọi thứ.

Khi viết bài viết này, CentOS 6 chính thức phân phối LLVM & Clang v3.4.2. Tuy nhiên, Clang v3.6 đã được phát hành.

Gợi ý chính thức là nếu bạn cần một phiên bản LLVM & Clang mới hơn, bạn nên xem xét một bản phân phối UNIX khác tập trung hơn vào việc hỗ trợ các phiên bản mới nhất của các gói phần mềm.

May mắn thay, bạn có thể cài đặt phiên bản LLVM & Clang GCC mới hơn trên CentOS. Điều này đi chệch khỏi hoàn toàn sử dụng phần mềm phân phối chính thức, nhưng đôi khi bạn có thể cảm thấy như bạn có ít sự lựa chọn.

Bài viết này mô tả cách cài đặt phiên bản LLVM & Clang được hỗ trợ chính thức của CentOS 6 và cách cài đặt phiên bản mới hơn. Bài viết này giả định rằng bạn có VPS CentOS 6 mới cài đặt, tuy nhiên bạn chắc chắn có thể làm theo hướng dẫn trên VPS bạn đã sử dụng.

Clang phần lớn là độc lập với GCC, nhưng như các văn bản của bài viết này, Clang vẫn sử dụng một số thư viện chia sẻ được cài đặt bởi GCC (cụ thể là, crtbegin.o, gcc, và gcc_s). Nếu bạn cài đặt LLVM & Clang trên CentOS 6, bạn sẽ không thể biên dịch bất cứ thứ gì nếu bạn không có GCC trên hệ thống của mình cho các thư viện dùng chung này. Lý tưởng nhất là yum sẽ có một gói phụ thuộc cho tiếng kêu của gcc và gcc-c ++, nhưng khi viết bài viết này, yum không biết về sự phụ thuộc.

Ngoài ra, việc xây dựng phiên bản LLVM & Clang mới hơn từ nguồn yêu cầu G ++ v4.7 +, mà bạn chỉ có thể có trên CentOS 6 bằng cách cài đặt nó theo nguồn.

Nếu bạn chạy tất cả các bước bên dưới, bạn sẽ kết thúc với 2 phiên bản GCC và 2 phiên bản LLVM & Clang. Điều này bao gồm một phiên bản cũ nhị phân được hỗ trợ chính thức và một phiên bản mới hơn từ nguồn cho mỗi chương trình. Tuy nhiên, không cần phải chạy tất cả các bước dưới đây. Bạn có thể quyết định xem bạn muốn phiên bản LLVM & Clang nhị phân cũ được hỗ trợ chính thức hay phiên bản mới hơn từ nguồn và chạy bất kỳ phần hướng dẫn nào phù hợp với quyết định của bạn.

Cài đặt phiên bản LLVM & Clang được hỗ trợ chính thức (cũ hơn)

  1. QUAN TRỌNG! Trước tiên, hãy cài đặt phiên bản GCC được hỗ trợ chính thức (cũ hơn), bằng cách thực hiện các bước trong bài viết Cách cài đặt GCC trên CentOS 6 - bạn KHÔNG cần thực hiện các bước trong tiêu đề của bài viết đó "Cài đặt phiên bản GCC mới hơn từ nguồn ".

  2. Cài đặt LLVM & Clang

    sudo yum install clang
        --- This will bring in llvm as a dependency
    
  3. Kiểm tra các phiên bản đã cài đặt và xem vị trí của chúng.

    clang --version
        May say: clang version 3.4.2 (tags/RELEASE_34/dot2-final)
    which clang
        /usr/bin/clang
    gcc --version
        May say: gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-11)
    g++ --version
        May say: g++ (GCC) 4.4.7 20120313 (Red Hat 4.4.7-11)
    which gcc
        /usr/bin/gcc
    which g++
        /usr/bin/g++
    

Cài đặt phiên bản mới hơn của LLVM & Clang từ nguồn

Để xây dựng LLVM & Clang theo nguồn trên CentOS, bạn phải có GCC v4.7 trở lên. CentOS 6 không có phiên bản cao này trong yum, vì vậy trước tiên bạn phải cài đặt GCC mới hơn từ nguồn.

  1. QUAN TRỌNG! Trước tiên, hãy cài đặt phiên bản GCC mới hơn từ nguồn, bằng cách thực hiện các bước trong bài viết Cách cài đặt GCC trên CentOS 6 - bạn cần thực hiện tất cả các bước trong bài viết đó, bao gồm trong tiêu đề "Cài đặt phiên bản GCC mới hơn từ nguồn ".

  2. Cài đặt thêm các gói yêu cầu.

    sudo yum install cmake
    
  3. Cài đặt phiên bản mới hơn của Python. LLVM & Clang v3.6.0 yêu cầu Python v2.7 +, nhưng kho lưu trữ CentOS 6 yum chỉ có Python v2.6.6.

    mkdir ~/sourceInstallations
    cd ~/sourceInstallations
    wget https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz
    tar -xvf Python-2.7.9.tgz
    cd Python-2.7.9
    ./configure && make && sudo make install
    
  4. Quyết định phiên bản LLVM & Clang nào bạn muốn. Lệnh này sẽ hiển thị cho bạn "thẻ" cho các phiên bản có sẵn.

    svn ls http://llvm.org/svn/llvm-project/llvm/tags | grep RELEASE
        RELEASE_1/
        ...
        RELEASE_352/
        RELEASE_360/
        RELEASE_361/
    svn ls http://llvm.org/svn/llvm-project/llvm/tags/RELEASE_361
        rc1/
        --- At this time, there is no final, just a release candidate.  You could certainly use a release candidate, but this article will show how to use a final release.
    svn ls http://llvm.org/svn/llvm-project/llvm/tags/RELEASE_360
        final/
        rc1/
        rc2/
        rc3/
        rc4/
    
  5. Lấy nguồn của phiên bản LLVM & Clang mà bạn muốn. Điều này sẽ chạy trong một vài phút. Phần còn lại của bài viết này được viết RELEASE_360/và sẽ tải các nguồn vào ~/sourceInstallations/llvm_RELEASE_360/- Bạn sẽ phải thay thế thẻ thích hợp để phù hợp với các phiên bản trong tương lai. Các thư mục dưới đây của compiler-rt, libcxxlibcxxabikhông phải là hoàn toàn cần thiết, nhưng chứa một số tính năng mà LLVM & Clang có mà GCC không, vì vậy mới có trong bài viết này. Có các "dự án con" LLVM khác mà bạn có thể chọn sử dụng, chẳng hạn như dragonegg, LLDB, OpenMB, vmkit, polly, libclc, klee, SAFECode và lld. Bạn có thể đọc về những người trên trang web LLVM .

    cd ~/sourceInstallations
    svn co http://llvm.org/svn/llvm-project/llvm/tags/RELEASE_360/final llvm_RELEASE_360
    cd llvm_RELEASE_360/tools
    svn co http://llvm.org/svn/llvm-project/cfe/tags/RELEASE_360/final clang
    cd ../projects
    svn co http://llvm.org/svn/llvm-project/compiler-rt/tags/RELEASE_360/final compiler-rt
    svn co http://llvm.org/svn/llvm-project/libcxx/tags/RELEASE_360/final libcxx
    svn co http://llvm.org/svn/llvm-project/libcxxabi/tags/RELEASE_360/final libcxxabi
    cd ..
    svn update
        At revision X.
        --- Hopefully this outputs one line saying "At revision X", but numbers instead of "X".  If it downloads more source files, a new revision was released while you were downloading the source code.  This is highly unlikely unless you're using trunk (the most up to date, maybe unstable code.)  But, if this happens, perform a svn update in the tools/clang, projects/compiler-rt, projects/libcxx, projects/libcxxabi, and again ~/sourceInstallations/llvm_RELEASE_360, until you are fully up to date.
    
  6. Xây dựng LLVM & Clang. Điều này sẽ chạy trong một thời gian. Nếu điều này hoàn thành chính xác, dòng cuối cùng bạn sẽ thấy sẽ nói "thành công". Việc nhìn thấy một số thông báo tìm lỗi nhanh chóng là điều bình thường. Luôn luôn là một ý tưởng tốt để xây dựng mọi thứ trong một thư mục khác với một thư mục nguồn.

    mkdir ../llvm_RELEASE_360_build
    cd ../llvm_RELEASE_360_build
    cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=/usr/local/bin/gcc -DCMAKE_CXX_COMPILER=/usr/local/bin/g++ ../llvm_RELEASE_360 && make && sudo make install && echo success
        --- If your VPS has multiple cores, you can speed up the build by changing the middle part
        ---   of this line from "&& make &&" to "&& make -j <number of cores> &&".
        --- You can see the number of cores your VPS has by running "nproc"
        --- If you omit -DCMAKE_BUILD_TYPE=Release, the build defaults to debug.  This is great if you need to debug LLVM & Clang itself, but slows down compilation of your end programs considerably.
        --- If you omit the references to gcc and g++, it will default to using the older binary versions in /usr/bin/, and will not compile.
    
  7. Kiểm tra các phiên bản đã cài đặt và xem vị trí của chúng.

    clang --version
        May say: clang version 3.6.0 (tags/RELEASE_360/final 237229)
    clang++ --version
        May say: clang version 3.6.0 (tags/RELEASE_360/final 237229)
    which clang
        /usr/local/bin/clang
    which clang++
        /usr/local/bin/clang++
    
  8. Thêm các thư viện mới vào ld (trình liên kết GNU).

    echo "/usr/local/lib" > usrLocalLib.conf
    sudo mv usrLocalLib.conf /etc/ld.so.conf.d/
    sudo ldconfig
        --- This may say a file or two "is not an ELF file - it has the wrong magic bytes at the start."
        --- You may ignore this message.  It is silent about the work it successfully completed.
    
  9. Tùy chọn thực hiện một chương trình "xin chào thế giới".

    mkdir ~/code
    cd ~/code
    Create a file main.cpp that says:
        #include <iostream>
        using namespace std;
        int main() {
            cout << "Hello world!" << endl;
            return 0;
        }
    --- One way to create this file is to run "vi main.cpp", hitting "i" to enter insert mode,
    ---   typing the above file, hitting ESC, and hitting "ZZ" to save.
    clang++ main.cpp -o main
    ./main
        Hello World!
    clang++ -stdlib=libc++ -lc++abi main.cpp -o main
        --- This uses Clang's libc++ and libc++abi, instead of the GNU stdlibc++ and stdlibc++abi
    ./main
        Hello world!
    
  10. Sử dụng LLVM & Clang khi bạn muốn.

    You could set LLVM & Clang to be your system's default C and C++ compiler by running:
        echo "export CC=/usr/local/bin/gcc" >> ~/.bashrc
        echo "export CXX=/usr/local/bin/g++" >> ~/.bashrc
        source ~/.bashrc
    Once and a while there is a difference between Clang and GCC, but it's becoming more and more rare.  To be more conservative, you could specify in your code's buildsystem to use LLVM & Clang, but otherwise leave your system's default to the source build of GCC.
    
  11. Tùy chọn lấy lại dung lượng ổ cứng. ~/sourceInstallationsThư mục của bạn sẽ chiếm khoảng 11GB dung lượng đĩa. Có thể là khôn ngoan để giữ các thư mục, vì có một số tùy chọn cấu hình tùy chọn mà bạn có thể cần sử dụng tại một thời điểm nào đó trong tương lai và sẽ nhanh hơn khi thực hiện được nhiều việc. Và, như đã đề cập ở trên, có thêm "tiểu dự án" mà bạn có thể thêm vào LLVM & Clang. Ngoài ra, quá trình xây dựng tạo ra các bản ghi mà sau này bạn có thể kiểm tra và làm việc nếu có sự cố. Nhưng, sau khi chạy "sudo make install" trước đó, LLVM & Clang đã cài đặt của bạn không phụ thuộc vào bất cứ thứ gì trong thư mục này và dung lượng có thể ở mức cao, vì vậy bạn có thể thực hiện bước này và lấy lại 11GB.

    cd ~/
    rm -rf sourceInstallations
    --- Again, if you can spare the space, you may someday be happy to have left it there.
    

Bây giờ bạn có LLVM & Clang mới hơn của bạn, các LLVM & Clang /usr/local/bin64 bit /usr/local/libmới hơn của bạn và LLVM & Clang mới hơn của bạn bao gồm các tệp trong /usr/local/include.


Thêm hình mờ nền vào tài liệu Word của bạn

Thêm hình mờ nền vào tài liệu Word của bạn

Microsoft Word cho phép bạn thêm hình mờ vào tài liệu của mình. Hình mờ là những hình ảnh hoặc văn bản nhẹ phía sau văn bản thông thường trong tài liệu của bạn.

Tạo danh sách phân phối Outlook \ Nhóm

Tạo danh sách phân phối Outlook \ Nhóm

Outlook và nhiều ứng dụng e-mail khác có một tính năng cho phép bạn gửi e-mail đến nhiều người nhận cùng một lúc bằng cách sử dụng danh sách phân phối. Bằng cách này khi bạn gửi e-mail, bạn chỉ cần đặt tên danh sách phân phối vào hộp Tới:

5 Xu hướng thiết kế web bổ sung cho nhau

5 Xu hướng thiết kế web bổ sung cho nhau

Luôn có những thứ bổ sung cho nhau. Cho dù đó là ghép nối các loại thực phẩm, kinh nghiệm hay thậm chí là các mối quan hệ cá nhân; một số thứ chỉ hoạt động tốt hơn khi có thứ gì đó khác hỗ trợ nó. Thiết kế web không có gì khác biệt. Có một số kỹ thuật nhất định dựa vào thứ gì đó khác để nó có hiệu quả hoặc thậm chí hoạt động bình thường.

Đã xảy ra sự cố khi gửi lệnh đến lỗi chương trình trong Excel

Đã xảy ra sự cố khi gửi lệnh đến lỗi chương trình trong Excel

Nếu bạn sử dụng Excel 2007 hoặc 2010, bạn có thể gặp lỗi khi mở Excel hoặc nhấp đúp vào tệp Excel có thông báo Đã xảy ra sự cố khi Gửi lệnh tới Chương trình. Điều này có thể được gây ra bởi một vài điều khác nhau.

Favicons là gì và cách sử dụng chúng

Favicons là gì và cách sử dụng chúng

Biểu tượng yêu thích là một hình ảnh nhỏ riêng lẻ của một trang web được hiển thị bên cạnh thanh địa chỉ. Tùy thuộc vào trình duyệt, nó cũng xuất hiện trong dấu trang / dấu trang trong thanh công cụ dấu trang và thanh bảng hoặc dưới dạng lối tắt trên màn hình.

Thay đổi chủ đề Microsoft Outlook của bạn

Thay đổi chủ đề Microsoft Outlook của bạn

Nếu bạn là người dùng Outlook thì bạn có thể tạo phong cách hoặc chủ đề của riêng mình cho các thư email gửi đi của mình chỉ với một vài cú nhấp chuột.

Sử dụng Windows Photo Viewer trong Windows 10

Sử dụng Windows Photo Viewer trong Windows 10

Nếu bạn thích sử dụng Windows Photo Viewer trong Windows 7 nhưng nhận thấy rằng bạn không thể sử dụng nó trong Windows 10 thì đây là cách bạn lấy lại.

Trình giả lập tốt nhất để chơi trò chơi Nintendo DS trên máy tính của bạn

Trình giả lập tốt nhất để chơi trò chơi Nintendo DS trên máy tính của bạn

Ngày nay, hình thức chơi game phổ biến nhất liên quan đến các trò chơi cũ, cổ điển là sử dụng trình giả lập. Hôm nay chúng tôi sẽ giới thiệu cho bạn một số trình giả lập tốt nhất cho Nintendo DS chạy trên mọi máy tính. Sau đó, tất cả những gì bạn phải làm là tải xuống trình giả lập NDS và các trò chơi và bạn đã sẵn sàng chơi.

Thay đổi Phông chữ Mặc định cho Tài liệu Word Mới

Thay đổi Phông chữ Mặc định cho Tài liệu Word Mới

Nếu bạn có một phông chữ nhất định mà bạn muốn sử dụng cho tất cả các tài liệu Word của mình, có một cách để làm cho Word sử dụng phông chữ đó theo mặc định mỗi khi bạn bắt đầu một tài liệu mới. Làm theo các bước đơn giản.

3 cách để tắt tính năng nén tệp tự động trong Windows

3 cách để tắt tính năng nén tệp tự động trong Windows

Bây giờ chúng ta sẽ đi vào cách ngăn Windows tự động nén tệp của bạn, do đó bạn không cần phải lo lắng về điều này xảy ra nữa.