Hur man installerar LLVM och Clang på CentOS 6

Hur man installerar LLVM och Clang på CentOS 6

LLVM är en kompilatorinfrastruktur med öppen källkod. LLVM startades 2000 och har använts och modifierats flitigt av Apple sedan 2005. Clang är en C, C++, Objective-C och Objective-C++ kompilator som fungerar med LLVM-systemet. Clang startades 2007 av Apple och sedan dess har Google och Intel engagerat sig i dess fortsatta utveckling.

Clangs utvecklare hävdar att den jämfört med GCC kompilerar snabbare, använder mindre minne, ger mer användarvänlig diagnostik under kompilering och är kompatibel med GCC.

CentOS följer utvecklingen av Red Hat Enterprise Linux (RHEL). RHEL strävar efter att vara en stabil serverplattform, vilket innebär att den inte har bråttom att inkludera de senaste versionerna av allt.

När denna artikel skrevs distribuerar CentOS 6 officiellt LLVM & Clang v3.4.2. Clang v3.6 har dock släppts.

Det officiella förslaget är att om du behöver en nyare version av LLVM & Clang, bör du överväga en annan UNIX-distribution som är mer fokuserad på att stödja de senaste versionerna av mjukvarupaket.

Lyckligtvis kan du installera en nyare version LLVM & Clang GCC på CentOS. Detta avviker från att enbart använda den officiellt distribuerade programvaran, men ibland kan du känna att du har lite val.

Den här artikeln beskriver hur du installerar CentOS 6-versionen av LLVM & Clang som officiellt stöds, och hur du installerar en nyare version. Den här artikeln förutsätter att du har en nyinstallerad CentOS 6 VPS, men du kan säkert följa instruktionerna på en VPS som du redan har använt.

Clang är i stort sett oberoende av GCC, men när den här artikeln skrivs använder Clang fortfarande flera delade bibliotek installerade av GCC (nämligen crtbegin.o, gcc, och gcc_s). Om du installerar LLVM & Clang på CentOS 6 kommer du inte att kunna kompilera någonting om du inte också har GCC på ditt system för dessa delade bibliotek. Helst skulle yum ha ett paketberoende för clang av gcc och gcc-c++, men när den här artikeln skrevs är yum omedveten om beroendet.

Att bygga en nyare version av LLVM & Clang från källan kräver dessutom G++ v4.7+, som du bara kan få på CentOS 6 genom att installera den efter källa.

Om du kör alla stegen nedan kommer du att sluta med 2 versioner av GCC och 2 versioner av LLVM & Clang. Detta inkluderar en officiellt stödd binär äldre version och en nyare version från källan för varje program. Det finns dock ingen anledning att köra alla stegen nedan. Du kan bestämma om du vill ha den officiellt stödda binära äldre versionen av LLVM & Clang, eller den nyare versionen från källan, och köra vilken del av instruktionerna som passar ditt beslut.

Installera en officiellt stödd (äldre) version av LLVM & Clang

  1. VIKTIG! Installera först en officiellt stödd (äldre) version av GCC, genom att utföra stegen i artikeln Hur man installerar GCC på CentOS 6 -- du behöver INTE utföra stegen under den artikelns rubrik "Installera en nyare version av GCC från källan ".

  2. Installera LLVM & Clang

    sudo yum install clang
        --- This will bring in llvm as a dependency
    
  3. Kontrollera de installerade versionerna och se var de finns.

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

Installera en nyare version av LLVM & Clang från källan

För att bygga LLVM & Clang efter källa på CentOS måste du ha GCC v4.7 eller högre. CentOS 6 har inte den här höga versionen i yum, så du måste först installera en nyare GCC från källan.

  1. VIKTIG! Installera först en nyare version av GCC från källan, genom att utföra stegen i artikeln Hur man installerar GCC på CentOS 6 -- du måste utföra alla steg i den artikeln, inklusive under rubriken "Installera en nyare version av GCC från källa".

  2. Installera ytterligare nödvändiga paket.

    sudo yum install cmake
    
  3. Installera en nyare version av Python. LLVM & Clang v3.6.0 kräver Python v2.7+, men CentOS 6 yum repository har bara 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. Bestäm vilken version av LLVM & Clang du vill ha. Detta kommando visar dig "taggarna" för de tillgängliga versionerna.

    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. Skaffa källan till versionen av LLVM & Clang som du vill ha. Detta kommer att pågå i några minuter. Resten av den här artikeln är skriven för RELEASE_360/och kommer att ladda ner källorna till ~/sourceInstallations/llvm_RELEASE_360/-- Du måste byta ut rätt tagg för att passa framtida versioner. Katalogen nedan för compiler-rt, libcxx, och libcxxabiär inte absolut nödvändiga, men innehåller några av de funktioner som LLVM & Clang har som GCC inte har, så de ingår i den här artikeln. Det finns andra LLVM "underprojekt" du kan välja att använda, såsom dragonegg, LLDB, OpenMB, vmkit, polly, libclc, klee, SAFECode och lld. Du kan läsa om dem på LLVM:s webbplats .

    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. Bygg LLVM & Clang. Detta kommer att pågå ett tag. Om detta slutförs korrekt kommer den sista raden du ser att säga "framgång". Det är normalt att se några felmeddelanden som snabbt rullar förbi. Det är alltid en bra idé att bygga saker i en annan katalog än en källkatalog.

    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. Kontrollera de installerade versionerna och se var de finns.

    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. Lägg till de nya biblioteken till ld (GNU-länken).

    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. Gör eventuellt ett "hej världen"-program.

    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. Använd LLVM & Clang när du vill.

    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. Eventuellt återta hårddiskutrymme. Din ~/sourceInstallationsmapp kommer att ta upp cirka 11 GB diskutrymme. Det är förmodligen klokt att behålla mapparna, eftersom det finns valfria konfigurationsalternativ du kan behöva använda någon gång i framtiden, och det skulle vara snabbare att ha mycket redan gjort. Och, som nämnts ovan, finns det ytterligare "delprojekt" du kan lägga till i LLVM & Clang. Byggprocessen skapar också loggar som du senare kan kontrollera och arbeta utifrån om något går fel. Men efter att ha kört "sudo make install" tidigare, är din installerade LLVM & Clang inte beroende av någonting i den här katalogen, och utrymmet kan vara mycket dyrt, så du kan göra detta steg och återta 11 GB.

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

Du har nu din nyare LLVM & Clang i /usr/local/bin, dina nyare 64-bitars LLVM & Clang libs i /usr/local/lib, och dina nyare LLVM & Clang inkluderar filer i /usr/local/include.


Installera Plesk på CentOS 7

Installera Plesk på CentOS 7

Använder du ett annat system? Plesk är en egen kontrollpanel för webbhotell som tillåter användare att administrera sina personliga och/eller klienters webbplatser, databaser

Hur man installerar Squid Proxy på CentOS

Hur man installerar Squid Proxy på CentOS

Squid är ett populärt, gratis Linux-program som låter dig skapa en webbproxy för vidarebefordran. I den här guiden ser du hur du installerar Squid på CentOS för att förvandla dig

Hur man installerar Lighttpd (LLMP Stack) på CentOS 6

Hur man installerar Lighttpd (LLMP Stack) på CentOS 6

Inledning Lighttpd är en apachegaffel som syftar till att vara mycket mindre resurskrävande. Den är lätt, därav namnet, och är ganska enkel att använda. Installera

Konfigurera statiskt nätverk och IPv6 på CentOS 7

Konfigurera statiskt nätverk och IPv6 på CentOS 7

VULTR har nyligen gjort ändringar på deras sida, och allt borde nu fungera bra direkt när NetworkManager är aktiverat. Om du vill inaktivera

Ändra Icinga2 för att använda Master/Client Model på CentOS 6 eller CentOS 7

Ändra Icinga2 för att använda Master/Client Model på CentOS 6 eller CentOS 7

Icinga2 är ett kraftfullt övervakningssystem, och när det används i en master-klient-modell kan det ersätta behovet av NRPE-baserade övervakningskontroller. Master-klienten

Hur man installerar Apache Cassandra 3.11.x på CentOS 7

Hur man installerar Apache Cassandra 3.11.x på CentOS 7

Använder du ett annat system? Apache Cassandra är ett gratis NoSQL-databashanteringssystem med öppen källkod som är designat för att ge skalbarhet, hög

Hur man installerar Microweber på CentOS 7

Hur man installerar Microweber på CentOS 7

Använder du ett annat system? Microweber är en öppen källkod för dra och släpp CMS och onlinebutik. Microweber källkod finns på GitHub. Denna guide kommer att visa dig

Hur man installerar Vanilla Forum på CentOS 7

Hur man installerar Vanilla Forum på CentOS 7

Använder du ett annat system? Vanilla forum är en open source forumapplikation skriven i PHP. Det är en helt anpassningsbar, enkel att använda och stöder externa

Hur man installerar Mattermost 4.1 på CentOS 7

Hur man installerar Mattermost 4.1 på CentOS 7

Använder du ett annat system? Mattermost är ett alternativ med öppen källkod, självvärd till meddelandetjänsten Slack SAAS. Med andra ord, med Mattermost, du ca

Skapa ett nätverk av Minecraft-servrar med BungeeCord på Debian 8, Debian 9 eller CentOS 7

Skapa ett nätverk av Minecraft-servrar med BungeeCord på Debian 8, Debian 9 eller CentOS 7

Vad du behöver En Vultr VPS med minst 1 GB RAM. SSH-åtkomst (med root-/administrativa privilegier). Steg 1: Installera BungeeCord Först till kvarn

Låt oss kryptera på Plesk

Låt oss kryptera på Plesk

Plesks kontrollpanel har en mycket trevlig integration för Lets Encrypt. Lets Encrypt är en av de enda SSL-leverantörerna som ger ut certifikat fullständigt

Låter kryptera på cPanel

Låter kryptera på cPanel

Lets Encrypt är en certifikatmyndighet dedikerad till att tillhandahålla SSL-certifikat gratis. cPanel har byggt en snygg integration så att du och din klient

Hur man installerar Concrete5 på CentOS 7

Hur man installerar Concrete5 på CentOS 7

Använder du ett annat system? Concrete5 är ett CMS med öppen källkod som erbjuder många distinkta och användbara funktioner för att hjälpa redaktörer att producera innehåll enkelt och

Hur man installerar Review Board på CentOS 7

Hur man installerar Review Board på CentOS 7

Använder du ett annat system? Review Board är ett gratis och öppen källkodsverktyg för att granska källkod, dokumentation, bilder och många fler. Det är webbaserad mjukvara

Ställ in HTTP-autentisering med Nginx på CentOS 7

Ställ in HTTP-autentisering med Nginx på CentOS 7

I den här guiden lär du dig hur du ställer in HTTP-autentisering för en Nginx-webbserver som körs på CentOS 7. Krav För att komma igång behöver du

Hur man installerar YOURLS på CentOS 7

Hur man installerar YOURLS på CentOS 7

YOURLS (Your Own URL Shortener) är ett webbadressförkortnings- och dataanalysprogram med öppen källkod. I den här artikeln kommer vi att täcka installationsprocessen

Hur man installerar och konfigurerar ArangoDB på CentOS 7

Hur man installerar och konfigurerar ArangoDB på CentOS 7

Använder du ett annat system? Inledning ArangoDB är en NoSQL-databas med öppen källkod med en flexibel datamodell för dokument, grafer och nyckel-värden. Det är

Använda Etckeeper för versionskontroll av /etc

Använda Etckeeper för versionskontroll av /etc

Inledning Katalogen /etc/ spelar en avgörande roll för hur ett Linux-system fungerar. Anledningen till detta är att nästan varje systemkonfiguration

Varför ska du använda SSHFS? Hur man monterar ett fjärrfilsystem med SSHFS på CentOS 6

Varför ska du använda SSHFS? Hur man monterar ett fjärrfilsystem med SSHFS på CentOS 6

Många systemadministratörer hanterar stora mängder servrar. När filer behöver nås över olika servrar, logga in på var och en individuellt ca

Konfigurera en Half Life 2-server på CentOS 6

Konfigurera en Half Life 2-server på CentOS 6

Denna handledning kommer att täcka processen att installera en Half Life 2-spelserver på CentOS 6 System. Steg 1: Installera förutsättningarna För att ställa in ou

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Artificiell intelligens är inte i framtiden, det är här i nuet I den här bloggen Läs hur Artificiell intelligens-applikationer har påverkat olika sektorer.

DDOS-attacker: En kort översikt

DDOS-attacker: En kort översikt

Är du också ett offer för DDOS-attacker och förvirrad över de förebyggande metoderna? Läs den här artikeln för att lösa dina frågor.

Har du någonsin undrat hur hackare tjänar pengar?

Har du någonsin undrat hur hackare tjänar pengar?

Du kanske har hört att hackare tjänar mycket pengar, men har du någonsin undrat hur de tjänar den typen av pengar? låt oss diskutera.

Revolutionerande uppfinningar från Google som gör ditt liv lätt.

Revolutionerande uppfinningar från Google som gör ditt liv lätt.

Vill du se revolutionerande uppfinningar av Google och hur dessa uppfinningar förändrade livet för varje människa idag? Läs sedan till bloggen för att se uppfinningar av Google.

Fredag ​​Essential: Vad hände med AI-drivna bilar?

Fredag ​​Essential: Vad hände med AI-drivna bilar?

Konceptet med att självkörande bilar ska ut på vägarna med hjälp av artificiell intelligens är en dröm vi har ett tag nu. Men trots flera löften finns de ingenstans att se. Läs den här bloggen för att lära dig mer...

Technological Singularity: A Distant Future of Human Civilization?

Technological Singularity: A Distant Future of Human Civilization?

När vetenskapen utvecklas i snabb takt och tar över en hel del av våra ansträngningar, ökar också riskerna för att utsätta oss för en oförklarlig singularitet. Läs, vad singularitet kan betyda för oss.

Utveckling av datalagring – Infographic

Utveckling av datalagring – Infographic

Lagringsmetoderna för data har utvecklats kan vara sedan födelsen av data. Den här bloggen tar upp utvecklingen av datalagring på basis av en infografik.

Funktioner för Big Data Reference Architecture Layers

Funktioner för Big Data Reference Architecture Layers

Läs bloggen för att känna till olika lager i Big Data Architecture och deras funktionaliteter på enklaste sätt.

6 fantastiska fördelar med att ha smarta hemenheter i våra liv

6 fantastiska fördelar med att ha smarta hemenheter i våra liv

I denna digitala värld har smarta hemenheter blivit en avgörande del av livet. Här är några fantastiska fördelar med smarta hemenheter om hur de gör vårt liv värt att leva och enklare.

macOS Catalina 10.15.4 tilläggsuppdatering orsakar fler problem än att lösa

macOS Catalina 10.15.4 tilläggsuppdatering orsakar fler problem än att lösa

Nyligen släppte Apple macOS Catalina 10.15.4, en tilläggsuppdatering för att åtgärda problem, men det verkar som om uppdateringen orsakar fler problem som leder till att mac-datorer blir murade. Läs den här artikeln för att lära dig mer