Hoe LLVM en Clang op CentOS te installeren 6

LLVM is een open-source compilerinfrastructuur. LLVM is gestart in 2000 en wordt sinds 2005 op grote schaal gebruikt en aangepast door Apple. Clang is een C, C ++, Objective-C en Objective-C ++ compiler die werkt met het LLVM-systeem. Clang is in 2007 opgericht door Apple en sindsdien zijn Google en Intel betrokken bij de voortdurende ontwikkeling ervan.

De ontwikkelaars van Clang beweren dat het vergeleken met GCC sneller compileert, minder geheugen gebruikt, gebruiksvriendelijkere diagnostiek geeft tijdens het compileren en compatibel is met GCC.

CentOS volgt de ontwikkeling van Red Hat Enterprise Linux (RHEL). RHEL streeft ernaar een stabiel serverplatform te zijn, wat betekent dat het niet overhaast is om de nieuwste versies van alles op te nemen.

Vanaf het schrijven van dit artikel distribueert CentOS 6 officieel LLVM & Clang v3.4.2. Clang v3.6 is echter uitgebracht.

De officiële suggestie is dat als u een recentere versie van LLVM & Clang nodig heeft, u een andere UNIX-distributie zou moeten overwegen die meer gericht is op het ondersteunen van de nieuwste versies van softwarepakketten.

Gelukkig kun je een meer recente versie LLVM & Clang GCC op CentOS installeren. Dit wijkt af van puur gebruik van de officieel gedistribueerde software, maar soms heb je het gevoel dat je weinig keus hebt.

In dit artikel wordt beschreven hoe u de officieel ondersteunde versie van LLVM & Clang door CentOS 6 installeert en hoe u een nieuwere versie installeert. In dit artikel wordt ervan uitgegaan dat je een nieuw geïnstalleerde CentOS 6 VPS hebt, maar je kunt de instructies zeker volgen op een VPS die je al hebt gebruikt.

Clang is grotendeels onafhankelijk van de GCC, maar met ingang van het schrijven van dit artikel, Clang maakt gebruik van nog een aantal gedeelde bibliotheken door GCC geïnstalleerd (dat wil zeggen, crtbegin.o, gcc, en gcc_s). Als je LLVM & Clang op CentOS 6 installeert, kun je niets compileren als je niet ook GCC op je systeem hebt voor deze gedeelde bibliotheken. Idealiter zou yum een ​​pakketafhankelijkheid hebben voor clang van gcc en gcc-c ++, maar vanaf het schrijven van dit artikel is yum zich niet bewust van de afhankelijkheid.

Bovendien vereist het bouwen van een nieuwere versie van LLVM & Clang vanuit de bron G ++ v4.7 +, die je alleen op CentOS 6 kunt krijgen door het per bron te installeren.

Als u alle onderstaande stappen uitvoert, komt u uit op 2 versies van GCC en 2 versies van LLVM & Clang. Dit omvat een officieel ondersteunde binaire oudere versie en een nieuwere bronversie voor elk programma. Het is echter niet nodig om alle onderstaande stappen uit te voeren. U kunt beslissen of u de officieel ondersteunde binaire oudere versie van LLVM & Clang, of de nieuwere versie van de bron wilt, en het gedeelte met instructies dat bij uw beslissing past, uitvoeren.

Installeer een officieel ondersteunde (oudere) versie van LLVM & Clang

  1. BELANGRIJK! Installeer eerst een officieel ondersteunde (oudere) versie van GCC door de stappen uit te voeren in het artikel GCC installeren op CentOS 6 - u hoeft de stappen NIET uit te voeren onder de kop van dat artikel "Installeer een nieuwere versie van GCC vanaf de bron '.

  2. Installeer LLVM & Clang

    sudo yum install clang
        --- This will bring in llvm as a dependency
    
  3. Controleer de geïnstalleerde versies en bekijk hun locaties.

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

Installeer een nieuwere versie van LLVM & Clang vanaf de bron

Om LLVM & Clang per bron op CentOS te bouwen, moet je GCC v4.7 of hoger hebben. CentOS 6 heeft niet zo hoog als een versie in yum, dus je moet eerst een recentere GCC vanaf de bron installeren.

  1. BELANGRIJK! Installeer eerst een nieuwere versie van GCC vanaf de bron door de stappen uit te voeren in het artikel Hoe GCC op CentOS 6 te installeren - je moet WEL alle stappen in dat artikel uitvoeren, inclusief onder het kopje "Installeer een nieuwere versie van GCC vanaf bron".

  2. Installeer extra vereiste pakketten.

    sudo yum install cmake
    
  3. Installeer een nieuwere versie van Python. LLVM & Clang v3.6.0 vereist Python v2.7 +, maar CentOS 6 yum repository heeft alleen 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. Bepaal welke versie van LLVM & Clang je wilt. Deze opdracht toont u de "tags" voor de beschikbare versies.

    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. Haal de bron op van de versie van LLVM & Clang die u wilt. Dit duurt een paar minuten. De rest van dit artikel is geschreven voor RELEASE_360/en zal de bronnen downloaden naar ~/sourceInstallations/llvm_RELEASE_360/- U zult de juiste tag moeten vervangen om in toekomstige versies te passen. De onderstaande mappen van compiler-rt, libcxxen libcxxabizijn niet absoluut noodzakelijk, maar bevatten enkele van de functies die LLVM & Clang hebben die GCC niet heeft, dus zijn opgenomen in dit artikel. Er zijn nog andere LLVM "subprojecten" die je zou kunnen gebruiken, zoals dragonegg, LLDB, OpenMB, vmkit, polly, libclc, klee, SAFECode en lld. U kunt hierover lezen op de LLVM-website .

    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. Bouw LLVM & Clang. Dit zal een tijdje duren. Als dit correct is ingevuld, zal de laatste regel die je ziet "succes" zeggen. Het is normaal dat er snel foutmeldingen verschijnen. Het is altijd een goed idee om dingen in een andere map te bouwen dan in een bronmap.

    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. Controleer de geïnstalleerde versies en bekijk hun locaties.

    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. Voeg de nieuwe bibliotheken toe aan ld (de 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. Maak optioneel een "hallo wereld" -programma.

    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. Gebruik LLVM & Clang wanneer je dat wilt.

    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. Herstel optioneel ruimte op de harde schijf. Uw ~/sourceInstallationsmap neemt ongeveer 11 GB schijfruimte in beslag. Het is waarschijnlijk verstandig om de mappen te bewaren, aangezien er optionele configuratie-opties zijn die u op een bepaald moment in de toekomst mogelijk moet gebruiken, en het zou sneller zijn als er al veel gedaan is. En zoals hierboven vermeld, zijn er extra "subprojecten" die u aan LLVM & Clang kunt toevoegen. Het bouwproces maakt ook logboeken die u later kunt controleren en waarmee u kunt werken als er iets misgaat. Maar nadat u "sudo make install" eerder hebt uitgevoerd, is uw geïnstalleerde LLVM & Clang niet afhankelijk van iets in deze map, en kan ruimte schaars zijn, dus u kunt deze stap doen en de 11 GB terugvorderen.

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

Je hebt nu je nieuwere LLVM & Clang in /usr/local/bin, je nieuwere 64-bit LLVM & Clang libs in /usr/local/lib, en je nieuwere LLVM & Clang bevatten bestanden in /usr/local/include.



Leave a Comment

Kan AI vechten met toenemend aantal ransomware-aanvallen?

Kan AI vechten met toenemend aantal ransomware-aanvallen?

Ransomware-aanvallen nemen toe, maar kan AI helpen het nieuwste computervirus het hoofd te bieden? Is AI het antwoord? Lees hier weten is AI boezem of vloek

ReactOS: is dit de toekomst van Windows?

ReactOS: is dit de toekomst van Windows?

ReactOS, een open source en gratis besturingssysteem is hier met de nieuwste versie. Kan het voldoen aan de behoeften van moderne Windows-gebruikers en Microsoft uitschakelen? Laten we meer te weten komen over deze oude stijl, maar een nieuwere OS-ervaring.

Blijf verbonden via WhatsApp Desktop-app 24 * 7

Blijf verbonden via WhatsApp Desktop-app 24 * 7

WhatsApp heeft eindelijk de Desktop-app voor Mac- en Windows-gebruikers gelanceerd. Nu heb je eenvoudig toegang tot WhatsApp vanuit Windows of Mac. Beschikbaar voor Windows 8+ en Mac OS 10.9+

Hoe AI procesautomatisering naar een hoger niveau kan tillen?

Hoe AI procesautomatisering naar een hoger niveau kan tillen?

Lees dit om te weten hoe kunstmatige intelligentie populair wordt onder de kleinschalige bedrijven en hoe het de kansen vergroot om ze te laten groeien en hun concurrenten voorsprong te geven.

macOS Catalina 10.15.4 Supplement Update veroorzaakt meer problemen dan het oplost

macOS Catalina 10.15.4 Supplement Update veroorzaakt meer problemen dan het oplost

Onlangs heeft Apple macOS Catalina 10.15.4 uitgebracht, een aanvullende update om problemen op te lossen, maar het lijkt erop dat de update meer problemen veroorzaakt die ertoe leiden dat mac-machines worden gemetseld. Lees dit artikel voor meer informatie

13 Commerciële data-extractietools voor big data

13 Commerciële data-extractietools voor big data

13 Commerciële data-extractietools voor big data

Wat is een logboekbestandssysteem en hoe werkt het?

Wat is een logboekbestandssysteem en hoe werkt het?

Onze computer slaat alle gegevens op een georganiseerde manier op, het zogenaamde Journaling-bestandssysteem. Het is een efficiënte methode waarmee de computer bestanden kan zoeken en weergeven zodra u op zoeken drukt.https://wethegeek.com/?p=94116&preview=true

Technologische singulariteit: een verre toekomst van de menselijke beschaving?

Technologische singulariteit: een verre toekomst van de menselijke beschaving?

Naarmate de wetenschap zich snel ontwikkelt en veel van onze inspanningen overneemt, nemen ook de risico's toe om onszelf te onderwerpen aan een onverklaarbare singulariteit. Lees, wat singulariteit voor ons kan betekenen.

Een inzicht in 26 Big Data-analysetechnieken: deel 1

Een inzicht in 26 Big Data-analysetechnieken: deel 1

Een inzicht in 26 Big Data-analysetechnieken: deel 1

De impact van kunstmatige intelligentie in de gezondheidszorg 2021

De impact van kunstmatige intelligentie in de gezondheidszorg 2021

AI in de zorg heeft de afgelopen decennia grote sprongen gemaakt. De toekomst van AI in de gezondheidszorg groeit dus nog steeds met de dag.