Kuidas installida CentOS 6 LLVM-i ja Clangi

LLVM on avatud lähtekoodiga kompilaatori infrastruktuur. LLVM sai alguse 2000. aastal ning Apple on seda laialdaselt kasutanud ja muutnud alates 2005. aastast. Clang on C, C++, Objective-C ja Objective-C++ kompilaator, mis töötab LLVM-süsteemiga. Clangi käivitas 2007. aastal Apple ning sellest ajast alates on Google ja Intel selle jätkuvas arendamises osalenud.

Clangi arendajad väidavad, et võrreldes GCC-ga kompileerib see kiiremini, kasutab vähem mälu, annab kompileerimise ajal kasutajasõbralikuma diagnostika ja ühildub GCC-ga.

CentOS järgib Red Hat Enterprise Linuxi (RHEL) arengut. RHEL püüab olla stabiilne serveriplatvorm, mis tähendab, et ta ei kiirusta kõige uuemate versioonide kaasamisega.

Alates selle artikli kirjutamisest levitab CentOS 6 ametlikult LLVM & Clang v3.4.2. Clang v3.6 on aga välja antud.

Ametlik soovitus on, et kui vajate LLVM & Clangi uuemat versiooni, peaksite kaaluma teistsugust UNIX-i distributsiooni, mis on rohkem keskendunud tarkvarapakettide uusimate versioonide toetamisele.

Õnneks saate CentOS-ile installida uuema versiooni LLVM & Clang GCC. See erineb puhtalt ametlikult levitatava tarkvara kasutamisest, kuid mõnikord võib tunduda, et teil on vähe valikut.

Selles artiklis kirjeldatakse, kuidas installida CentOS 6 ametlikult toetatud LLVM & Clangi versioon ja kuidas installida uuem versioon. See artikkel eeldab, et teil on värskelt installitud CentOS 6 VPS, kuid võite kindlasti järgida juba kasutatud VPS-i juhiseid.

Clang on suures osas GCC-st sõltumatu, kuid selle artikli kirjutamise seisuga kasutab Clang ikka veel mitmeid GCC installitud jagatud teeke (nimelt crtbegin.o, gcc, ja gcc_s). Kui installite LLVM & Clangi operatsioonisüsteemi CentOS 6, ei saa te midagi kompileerida, kui teie süsteemis pole nende jagatud teekide jaoks ka GCC-d. Ideaalis oleks yum paketisõltuvus gcc ja gcc-c++ klangi jaoks, kuid selle artikli kirjutamise seisuga ei ole yum sellest sõltuvusest teadlik.

Lisaks nõuab LLVM & Clangi allikast uuema versiooni loomine G++ versiooni 4.7+, mille saate hankida ainult CentOS 6-s, kui installite selle allika järgi.

Kui teete kõik allolevad toimingud, saate lõpuks kaks GCC versiooni ja kaks LLVM & Clangi versiooni. See hõlmab iga programmi ametlikult toetatud binaarset vanemat versiooni ja uuemat versiooni allikast. Siiski pole vaja kõiki alltoodud samme läbida. Saate otsustada, kas soovite LLVM & Clangi ametlikult toetatud binaarset vanemat versiooni või allika uuemat versiooni, ja käivitada mis tahes juhiste jaotis, mis sobib teie otsusega.

Installige LLVM & Clangi ametlikult toetatud (vanem) versioon

  1. TÄHTIS! Esmalt installige ametlikult toetatud (vanem) GCC versioon, järgides artiklis GCC installimine CentOS 6 -sse toodud samme – te EI pea täitma selle artikli pealkirja all olevaid samme "GCC uuema versiooni installimine allikast ".

  2. Installige LLVM & Clang

    sudo yum install clang
        --- This will bring in llvm as a dependency
    
  3. Kontrollige installitud versioone ja vaadake nende asukohti.

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

Installige allikast LLVM & Clangi uuem versioon

LLVM-i ja Clangi loomiseks allika järgi CentOS-is peab teil olema GCC v4.7 või uuem. CentOS 6-l pole yumis nii kõrget versiooni, seega peate esmalt installima allikast uuema GCC.

  1. TÄHTIS! Esmalt installige allikast GCC uuem versioon, järgides artiklis GCC installimine CentOS 6- sse toodud samme – peate tegema kõik selles artiklis olevad toimingud, sealhulgas jaotises "GCC uuema versiooni installimine allikas".

  2. Installige täiendavalt vajalikud paketid.

    sudo yum install cmake
    
  3. Installige Pythoni uuem versioon. LLVM ja Clang v3.6.0 nõuavad Pythoni versiooni 2.7+, kuid CentOS 6 yumi hoidlas on ainult 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. Otsustage, millist LLVM & Clangi versiooni soovite. See käsk näitab teile saadaolevate versioonide "silte".

    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. Hankige soovitud LLVM & Clangi versiooni allikas. See töötab mõne minuti. Ülejäänud osa sellest artiklist on kirjutatud RELEASE_360/ja laadib allikad alla ~/sourceInstallations/llvm_RELEASE_360/– tulevaste versioonide sobitamiseks peate asendama õige sildi. Allolevad kataloogid compiler-rt, libcxx, ja libcxxabiei ole absoluutselt vajalikud, kuid sisaldavad mõningaid LLVM & Clangi funktsioone, mida GCC-l ei ole, seega on need selles artiklis kaasatud. On ka teisi LLVM-i "alamprojekte", mida saate kasutada, näiteks dragonegg, LLDB, OpenMB, vmkit, polly, libclc, klee, SAFECOde ja lld. Nende kohta saate lugeda LLVM-i veebisaidilt .

    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. Ehitage LLVM ja Clang. See töötab mõnda aega. Kui see on õigesti lõpetatud, on viimasel real, mida näete, "edu". On normaalne, et mõned veanäitajad kiiresti mööda kerivad. Alati on hea mõte ehitada asjad lähtekataloogist erinevasse kataloogi.

    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. Kontrollige installitud versioone ja vaadake nende asukohti.

    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. Lisage uued teegid ld-le (GNU linker).

    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. Soovi korral koostage programm "Tere maailm".

    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. Kasutage LLVM & Clangi, kui soovite.

    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. Soovi korral saate kõvakettaruumi tagasi võtta. Teie ~/sourceInstallationskaust võtab umbes 11 GB kettaruumi. Ilmselt on mõistlik kaustad alles jätta, kuna on valikulisi seadistusvõimalusi, mida võib tekkida vajadus tulevikus kasutada, ja kiirem oleks, kui palju oleks juba tehtud. Ja nagu eespool mainitud, saate LLVM & Clangi lisada täiendavaid "alamprojekte". Samuti loob ehitusprotsess logisid, mida saate hiljem kontrollida ja kasutada, kui midagi läheb valesti. Kuid pärast "sudo make install" varasemat käivitamist ei sõltu teie installitud LLVM & Clang mitte millestki selles kataloogis ja ruumi võib olla liiga palju, nii et saate seda sammu teha ja 11 GB tagasi nõuda.

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

Teil on nüüd uuem LLVM & Clang kataloogis /usr/local/bin, uuemad 64-bitised LLVM & Clangi libised asukohas /usr/local/libja uuemad LLVM & Clangi failid sisaldavad faile /usr/local/include.

Jäta kommentaar

Masinate tõus: AI tegelikud rakendused

Masinate tõus: AI tegelikud rakendused

Tehisintellekt ei ole tulevik, see on siin, olevikus. Sellest blogist loe, kuidas tehisintellekti rakendused on mõjutanud erinevaid sektoreid.

DDOS-i rünnakud: lühike ülevaade

DDOS-i rünnakud: lühike ülevaade

Kas olete ka DDOS-i rünnakute ohver ja olete segaduses ennetusmeetodite osas? Oma päringute lahendamiseks lugege seda artiklit.

Kas olete kunagi mõelnud, kuidas häkkerid raha teenivad?

Kas olete kunagi mõelnud, kuidas häkkerid raha teenivad?

Võib-olla olete kuulnud, et häkkerid teenivad palju raha, kuid kas olete kunagi mõelnud, kuidas nad sellist raha teenivad? arutleme.

Googlei revolutsioonilised leiutised, mis muudavad teie elu lihtsaks.

Googlei revolutsioonilised leiutised, mis muudavad teie elu lihtsaks.

Kas soovite näha Google'i revolutsioonilisi leiutisi ja seda, kuidas need leiutised muutsid iga inimese elu tänapäeval? Seejärel lugege ajaveebi, et näha Google'i leiutisi.

Reede oluline osa: mis juhtus tehisintellektiga juhitavate autodega?

Reede oluline osa: mis juhtus tehisintellektiga juhitavate autodega?

Isejuhtivate autode kontseptsioon tehisintellekti abil teedele jõudmiseks on meil juba mõnda aega unistus. Kuid vaatamata mitmele lubadusele pole neid kusagil näha. Lisateabe saamiseks lugege seda ajaveebi…

Tehnoloogiline singulaarsus: inimtsivilisatsiooni kauge tulevik?

Tehnoloogiline singulaarsus: inimtsivilisatsiooni kauge tulevik?

Kuna teadus areneb kiiresti, võttes üle suure osa meie jõupingutustest, suureneb ka oht, et allume seletamatule singulaarsusele. Loe, mida singulaarsus meie jaoks tähendada võiks.

Suurandmete viitearhitektuuri kihtide funktsioonid

Suurandmete viitearhitektuuri kihtide funktsioonid

Lugege ajaveebi, et kõige lihtsamal viisil teada saada Big Data Architecture'i erinevaid kihte ja nende funktsioone.

Andmesalvestuse areng – infograafik

Andmesalvestuse areng – infograafik

Andmete säilitamise meetodid on arenenud alates andmete sünnist. See ajaveeb käsitleb infograafiku alusel andmete salvestamise arengut.

6 hämmastavat eelist nutikate koduseadmete olemasolust meie elus

6 hämmastavat eelist nutikate koduseadmete olemasolust meie elus

Selles digipõhises maailmas on nutikad koduseadmed muutunud elu oluliseks osaks. Siin on mõned nutikate koduseadmete hämmastavad eelised, mis muudavad meie elu elamisväärseks ja lihtsamaks.

macOS Catalina 10.15.4 täienduse värskendus põhjustab rohkem probleeme kui lahendamine

macOS Catalina 10.15.4 täienduse värskendus põhjustab rohkem probleeme kui lahendamine

Hiljuti andis Apple välja macOS Catalina 10.15.4 täiendusvärskenduse probleemide lahendamiseks, kuid tundub, et värskendus põhjustab rohkem probleeme, mille tulemuseks on Maci masinate tellimine. Lisateabe saamiseks lugege seda artiklit