Cara Memasang LLVM dan Clang pada CentOS 6

LLVM adalah infrastruktur penyusun sumber terbuka. LLVM dimulakan pada tahun 2000, dan telah banyak digunakan dan dimodifikasi oleh Apple sejak tahun 2005. Clang adalah penyusun C, C ++, Objective-C, dan Objective-C ++ yang berfungsi dengan sistem LLVM. Clang dimulakan pada tahun 2007 oleh Apple, dan sejak itu Google dan Intel terlibat dalam pengembangannya yang berterusan.

Pembangun Clang mendakwa bahawa berbanding dengan GCC, ia mengumpulkan lebih cepat, menggunakan lebih sedikit memori, memberikan diagnostik yang lebih mesra pengguna semasa penyusunan, dan serasi dengan GCC.

CentOS mengikuti perkembangan Red Hat Enterprise Linux (RHEL). RHEL berusaha untuk menjadi platform pelayan yang stabil, yang bermaksud tidak tergesa-gesa untuk memasukkan versi terkini dari segalanya.

Sehingga penulisan artikel ini, CentOS 6 secara rasmi mengedarkan LLVM & Clang v3.4.2. Walau bagaimanapun, Clang v3.6 telah dilepaskan.

Cadangan rasmi adalah jika anda memerlukan versi LLVM & Clang yang lebih baru, anda harus mempertimbangkan pengedaran UNIX yang berbeza yang lebih tertumpu pada menyokong versi terbaru pakej perisian.

Nasib baik, anda dapat memasang LLVM & Clang GCC versi yang lebih baru di CentOS. Ini menyimpang dari penggunaan perisian yang diedarkan secara rasmi, tetapi kadang-kadang anda mungkin merasa seperti mempunyai sedikit pilihan.

Artikel ini menerangkan cara memasang LLVM & Clang versi CentOS 6 yang disokong secara rasmi, dan cara memasang versi yang lebih baru. Artikel ini menganggap anda mempunyai CentOS 6 VPS yang baru dipasang, namun anda pasti dapat mengikuti arahan pada VPS yang telah anda gunakan.

Dilafaz adalah sebahagian besarnya bebas daripada GCC, tetapi sehingga penulisan artikel ini, dilafaz masih menggunakan beberapa perpustakaan dikongsi dipasang oleh GCC (iaitu crtbegin.o, gcc, dan gcc_s). Sekiranya anda memasang LLVM & Clang di CentOS 6, anda tidak akan dapat menyusun apa-apa jika anda juga tidak mempunyai GCC di sistem anda untuk perpustakaan bersama ini. Sebaik-baiknya, yum mempunyai ketergantungan paket untuk clang gcc dan gcc-c ++, tetapi pada penulisan artikel ini, yum tidak menyedari pergantungan itu.

Selain itu, untuk membina versi LLVM & Clang yang lebih baru dari sumber memerlukan G ++ v4.7 +, yang hanya boleh anda dapatkan di CentOS 6 dengan memasangnya mengikut sumber.

Sekiranya anda menjalankan semua langkah di bawah, anda akan mendapat 2 versi GCC dan 2 versi LLVM & Clang. Ini termasuk versi lama binari yang disokong secara rasmi dan versi yang lebih baru dari sumber untuk setiap program. Walau bagaimanapun, tidak perlu menjalankan semua langkah di bawah. Anda boleh memutuskan sama ada anda mahukan versi LLVM & Clang yang lebih lama yang disokong secara rasmi, atau versi yang lebih baru dari sumber, dan jalankan bahagian arahan mana yang sesuai dengan keputusan anda.

Pasang versi LLVM & Clang yang disokong secara rasmi (lama)

  1. PENTING! Pertama, pasang versi GCC yang disokong secara rasmi (lebih lama), dengan melakukan langkah-langkah dalam artikel Cara Memasang GCC di CentOS 6 - anda TIDAK perlu melakukan langkah-langkah di bawah tajuk artikel itu "Pasang versi GCC yang lebih baru dari sumber ".

  2. Pasang LLVM & Clang

    sudo yum install clang
        --- This will bring in llvm as a dependency
    
  3. Periksa versi yang dipasang, dan lihat lokasinya.

    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++
    

Pasang versi LLVM & Clang yang lebih baru dari sumber

Untuk membina LLVM & Clang berdasarkan sumber di CentOS, anda mesti mempunyai GCC v4.7 atau lebih tinggi. CentOS 6 tidak mempunyai versi yum yang tinggi ini, jadi pertama-tama anda harus memasang GCC yang lebih baru dari sumbernya.

  1. PENTING! Pertama, pasang versi GCC yang lebih baru dari sumber, dengan melakukan langkah-langkah dalam artikel Cara Memasang GCC di CentOS 6 - anda perlu melakukan semua langkah dalam artikel itu, termasuk di bawah tajuk "Pasang versi GCC yang lebih baru dari sumber ".

  2. Pasang pakej tambahan yang diperlukan.

    sudo yum install cmake
    
  3. Pasang versi Python yang lebih baru. LLVM & Clang v3.6.0 memerlukan Python v2.7 +, tetapi repositori CentOS 6 yum hanya mempunyai 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. Tentukan versi LLVM & Clang yang anda mahukan. Perintah ini akan menunjukkan kepada anda "tag" untuk versi yang tersedia.

    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. Dapatkan sumber versi LLVM & Clang yang anda mahukan. Ini akan berjalan selama beberapa minit. Selebihnya artikel ini ditulis untuk RELEASE_360/dan akan memuat turun sumbernya ke dalam ~/sourceInstallations/llvm_RELEASE_360/- Anda harus mengganti tag yang sesuai agar sesuai dengan versi masa depan. Direktori di bawah untuk compiler-rt, libcxxdan libcxxabitidak benar-benar perlu, tetapi mengandungi beberapa ciri-ciri yang LLVM & dilafaz mempunyai bahawa GCC tidak, jadi adalah termasuk dalam artikel ini. Terdapat "sub-projek" LLVM lain yang dapat anda pilih untuk digunakan, seperti dragonegg, LLDB, OpenMB, vmkit, polly, libclc, klee, SAFECode, dan lld. Anda boleh membaca mengenai mereka di laman 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. Bina LLVM & Clang. Ini akan berjalan sebentar. Sekiranya ini selesai dengan betul, baris terakhir yang akan anda lihat akan menyatakan "kejayaan". Adalah normal untuk melihat beberapa mesej yang kelihatan ralat bergulir dengan cepat. Adalah idea yang baik untuk membina sesuatu dalam direktori yang berbeza daripada direktori sumber.

    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. Periksa versi yang dipasang, dan lihat lokasinya.

    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. Tambahkan perpustakaan baru ke ld (penghubung 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. Secara pilihan membuat program "hello world".

    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. Gunakan LLVM & Clang apabila anda mahu.

    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. Dapatkan semula ruang cakera keras secara pilihan. ~/sourceInstallationsFolder anda akan memakan ruang cakera sekitar 11GB. Mungkin bijaksana untuk menyimpan folder, kerana terdapat pilihan konfigurasi pilihan yang mungkin perlu anda gunakan pada suatu ketika nanti, dan akan lebih cepat untuk menyelesaikan banyak perkara. Dan, seperti yang disebutkan di atas, ada "sub-projek" tambahan yang dapat Anda tambahkan ke LLVM & Clang. Proses membina juga membuat log yang kemudian anda boleh periksa dan berfungsi sekiranya ada yang tidak kena. Tetapi, setelah menjalankan "sudo make install" lebih awal, LLVM & Clang yang anda pasang tidak bergantung pada apa pun dalam direktori ini, dan ruangnya dapat menjadi premium, jadi anda dapat melakukan langkah ini dan mendapatkan kembali 11GB.

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

Anda kini mempunyai LLVM & Clang yang lebih baru, LLVM /usr/local/bin64-bit & Clang yang /usr/local/liblebih baru, dan LLVM & Clang yang lebih baru termasuk fail /usr/local/include.



Leave a Comment

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

6 Perkara Yang Sangat Menggila Tentang Nintendo Switch

6 Perkara Yang Sangat Menggila Tentang Nintendo Switch

Ramai daripada anda tahu Switch akan keluar pada Mac 2017 dan ciri baharunya. Bagi yang tidak tahu, kami telah menyediakan senarai ciri yang menjadikan 'Tukar' sebagai 'gajet yang mesti ada'.

Janji Teknologi Yang Masih Tidak Ditepati

Janji Teknologi Yang Masih Tidak Ditepati

Adakah anda menunggu gergasi teknologi memenuhi janji mereka? semak apa yang masih belum dihantar.

Fungsi Lapisan Seni Bina Rujukan Data Besar

Fungsi Lapisan Seni Bina Rujukan Data Besar

Baca blog untuk mengetahui lapisan berbeza dalam Seni Bina Data Besar dan fungsinya dengan cara yang paling mudah.

Bagaimana AI Boleh Mengambil Automasi Proses ke Tahap Seterusnya?

Bagaimana AI Boleh Mengambil Automasi Proses ke Tahap Seterusnya?

Baca ini untuk mengetahui cara Kecerdasan Buatan semakin popular di kalangan syarikat berskala kecil dan cara ia meningkatkan kebarangkalian untuk menjadikan mereka berkembang dan memberikan pesaing mereka kelebihan.

CAPTCHA: Berapa Lama Ia Boleh Kekal Sebagai Teknik Berdaya maju Untuk Perbezaan Manusia-AI?

CAPTCHA: Berapa Lama Ia Boleh Kekal Sebagai Teknik Berdaya maju Untuk Perbezaan Manusia-AI?

CAPTCHA telah menjadi agak sukar untuk diselesaikan oleh pengguna dalam beberapa tahun kebelakangan ini. Adakah ia dapat kekal berkesan dalam pengesanan spam dan bot pada masa hadapan?

Keunikan Teknologi: Masa Depan Tamadun Manusia yang Jauh?

Keunikan Teknologi: Masa Depan Tamadun Manusia yang Jauh?

Apabila Sains Berkembang pada kadar yang pantas, mengambil alih banyak usaha kita, risiko untuk menundukkan diri kita kepada Ketunggalan yang tidak dapat dijelaskan juga meningkat. Baca, apakah makna ketunggalan bagi kita.

Teleperubatan Dan Penjagaan Kesihatan Jauh: Masa Depan Ada Di Sini

Teleperubatan Dan Penjagaan Kesihatan Jauh: Masa Depan Ada Di Sini

Apakah teleperubatan, penjagaan kesihatan jauh dan impaknya kepada generasi akan datang? Adakah ia tempat yang baik atau tidak dalam situasi pandemik? Baca blog untuk mencari paparan!

Pernahkah Anda Terfikir Bagaimana Penggodam Mendapatkan Wang?

Pernahkah Anda Terfikir Bagaimana Penggodam Mendapatkan Wang?

Anda mungkin pernah mendengar bahawa penggodam memperoleh banyak wang, tetapi pernahkah anda terfikir bagaimana mereka memperoleh wang seperti itu? Mari berbincang.

Kemas Kini Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Isu Daripada Penyelesaian

Kemas Kini Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Isu Daripada Penyelesaian

Baru-baru ini Apple mengeluarkan macOS Catalina 10.15.4 kemas kini tambahan untuk menyelesaikan masalah tetapi nampaknya kemas kini itu menyebabkan lebih banyak masalah yang membawa kepada pemusnahan mesin mac. Baca artikel ini untuk mengetahui lebih lanjut