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

CyberPanel installeren en configureren op uw CentOS 7-server

CyberPanel installeren en configureren op uw CentOS 7-server

Gebruikt u een ander systeem? Introductie CyberPanel is een van de eerste bedieningspanelen op de markt die zowel open source is als OpenLiteSpeed ​​gebruikt. Wat thi

Sensu Monitoring installeren en configureren op CentOS 7

Sensu Monitoring installeren en configureren op CentOS 7

Introductie Sensu is een gratis en open source monitoringoplossing die kan worden gebruikt om server, applicatie en verschillende systeemservices te monitoren. Sensu i

Sudo gebruiken op Debian, CentOS en FreeBSD

Sudo gebruiken op Debian, CentOS en FreeBSD

Het gebruik van een sudo-gebruiker om toegang te krijgen tot een server en opdrachten uit te voeren op rootniveau is een veel voorkomende praktijk onder Linux en Unix-systeembeheerder. Het gebruik van een sud

Stel Nginx-RTMP in op CentOS 7

Stel Nginx-RTMP in op CentOS 7

Gebruikt u een ander systeem? RTMP is geweldig voor het weergeven van live inhoud. Wanneer RTMP is gekoppeld aan FFmpeg, kunnen streams worden omgezet in verschillende kwaliteiten. Vultr ik

Hoe TaskBoard 0.3.1 op CentOS 7 te installeren

Hoe TaskBoard 0.3.1 op CentOS 7 te installeren

TaskBoard is een gratis en open source webbeheer voor tijdbeheer. Geïnspireerd door Kanban, kan TaskBoard u helpen bij het bijhouden van dingen die moeten worden gedaan in een

Gradle installeren op CentOS 7

Gradle installeren op CentOS 7

Gebruikt u een ander systeem? Gradle is een gratis en open source toolset voor het automatiseren van builds, gebaseerd op de concepten van Apache Ant en Apache Maven. Gradle biedt

Installeer een FTP-server met ProFTPd op CentOS 6 of CentOS 7

Installeer een FTP-server met ProFTPd op CentOS 6 of CentOS 7

Gebruikt u een ander systeem? In deze handleiding zullen we zien hoe u een FTP-server (ProFTPd) configureert om bestanden over te zetten tussen uw pc en uw server.

Netdata installeren op CentOS 7

Netdata installeren op CentOS 7

Gebruikt u een ander systeem? Netdata is een rijzende ster op het gebied van realtime monitoring van systeemstatistieken. Vergeleken met andere tools van dezelfde soort, Netdata:

Hoe Apache Cassandra 3.11.x op CentOS 7 te installeren

Hoe Apache Cassandra 3.11.x op CentOS 7 te installeren

Gebruikt u een ander systeem? Apache Cassandra is een gratis en open source NoSQL-databasebeheersysteem dat is ontworpen om schaalbaarheid te bieden

Hoe Just Cause 2 (JC2-MP) -server op CentOS 7 te installeren

Hoe Just Cause 2 (JC2-MP) -server op CentOS 7 te installeren

In deze tutorial leer je goed hoe je een Just Cause 2 multiplayer-server opzet. Vereisten Zorg ervoor dat het systeem volledig is bijgewerkt voordat we beginnen

Hoe Starbound Server op CentOS 7 te installeren

Hoe Starbound Server op CentOS 7 te installeren

Gebruikt u een ander systeem? In deze tutorial leg ik uit hoe je een Starbound-server instelt op CentOS 7. Vereisten Je moet dit spel op je hebben

ZNC installeren en configureren op CentOS 7

ZNC installeren en configureren op CentOS 7

ZNC is een gratis en open-source IRC-uitsmijter die permanent verbonden blijft met een netwerk, zodat klanten berichten kunnen ontvangen die worden verzonden terwijl ze offline zijn. Thi

Django installeren op CentOS 7

Django installeren op CentOS 7

Django is een populair Python-framework voor het schrijven van webapplicaties. Met Django kun je sneller applicaties bouwen, zonder het wiel opnieuw uit te vinden. Als je wilt

MantisBT 2.5 installeren op CentOS 7

MantisBT 2.5 installeren op CentOS 7

MantisBT, of Mantis Bug Tracker, is een open source issue tracker geschreven in PHP. MantisBT is uitgebalanceerd tussen gebruiksgemak en functionaliteit, mits

Installeer Elgg op CentOS 7

Installeer Elgg op CentOS 7

Gebruikt u een ander systeem? Elgg is een open source engine voor sociaal netwerken waarmee sociale omgevingen kunnen worden gecreëerd, zoals sociale campusnetwerken

Hoe installeer ik het Froxlor Server Management Panel op CentOS 7

Hoe installeer ik het Froxlor Server Management Panel op CentOS 7

Froxlor is een open source, gratis, lichtgewicht en toch krachtig serverbeheerpaneel dat geweldig is voor het opzetten en beheren van webhostingservices. Thi

Hoe Alfresco Community Edition op CentOS 7 te installeren

Hoe Alfresco Community Edition op CentOS 7 te installeren

Gebruikt u een ander systeem? Alfresco Community Edition is een open source-versie van de Alfresco Content Services. Het is geschreven in Java en gebruikt PostgreSQL t

Hoe Vtiger CRM Open Source Edition op CentOS 7 te installeren

Hoe Vtiger CRM Open Source Edition op CentOS 7 te installeren

Vtiger CRM is een populaire applicatie voor klantrelatiebeheer die bedrijven kan helpen hun verkoop te laten groeien, klantenservice te bieden en de winst te vergroten. ik

Een netwerk van Minecraft-servers maken met BungeeCord op Debian 8, Debian 9 of CentOS 7

Een netwerk van Minecraft-servers maken met BungeeCord op Debian 8, Debian 9 of CentOS 7

Wat je nodig hebt Een Vultr VPS met minimaal 1 GB RAM. SSH-toegang (met root- / beheerdersrechten). Stap 1: BungeeCord installeren Eerste dingen eerst

Hoe MaraDNS op CentOS 6 te installeren

Hoe MaraDNS op CentOS 6 te installeren

MaraDNS is een lichtgewicht maar robuust open source DNS-serverprogramma. Vergeleken met andere applicaties van dezelfde soort, zoals ISC BIND, PowerDNS en djbdns

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.