Slik installerer du LLVM og Clang på CentOS 6

Slik installerer du LLVM og Clang på CentOS 6

LLVM er en åpen kildekode-kompilatorinfrastruktur. LLVM ble startet i 2000, og har vært mye brukt og modifisert av Apple siden 2005. Clang er en C, C++, Objective-C og Objective-C++ kompilator som fungerer med LLVM-systemet. Clang ble startet i 2007 av Apple, og siden den gang har Google og Intel blitt involvert i den fortsatte utviklingen.

Clangs utviklere hevder at sammenlignet med GCC, kompilerer den raskere, bruker mindre minne, gir mer brukervennlig diagnostikk under kompilering og er kompatibel med GCC.

CentOS følger utviklingen av Red Hat Enterprise Linux (RHEL). RHEL streber etter å være en stabil serverplattform, noe som betyr at den ikke haster med å inkludere de nyeste versjonene av alt.

Når denne artikkelen skrives, distribuerer CentOS 6 offisielt LLVM & Clang v3.4.2. Imidlertid har Clang v3.6 blitt utgitt.

Det offisielle forslaget er at hvis du trenger en nyere versjon av LLVM & Clang, bør du vurdere en annen UNIX-distribusjon som er mer fokusert på å støtte de nyeste versjonene av programvarepakker.

Heldigvis kan du installere en nyere versjon LLVM & Clang GCC på CentOS. Dette avviker fra ren bruk av den offisielt distribuerte programvaren, men noen ganger kan du føle at du har lite valg.

Denne artikkelen beskriver hvordan du installerer CentOS 6 offisielt støttet versjon av LLVM & Clang, og hvordan du installerer en nyere versjon. Denne artikkelen forutsetter at du har en nyinstallert CentOS 6 VPS, men du kan absolutt følge instruksjonene på en VPS du allerede har brukt.

Clang er stort sett uavhengig av GCC, men når denne artikkelen skrives, bruker Clang fortsatt flere delte biblioteker installert av GCC (nemlig crtbegin.o, gcc, og gcc_s). Hvis du installerer LLVM & Clang på CentOS 6, vil du ikke kunne kompilere noe hvis du ikke også har GCC på systemet ditt for disse delte bibliotekene. Ideelt sett ville yum ha en pakkeavhengighet for klang av gcc og gcc-c++, men når denne artikkelen skrives, er yum uvitende om avhengigheten.

I tillegg krever det å bygge en nyere versjon av LLVM & Clang fra kilden G++ v4.7+, som du bare kan få på CentOS 6 ved å installere den etter kilde.

Hvis du kjører alle trinnene nedenfor, vil du ende opp med 2 versjoner av GCC og 2 versjoner av LLVM & Clang. Dette inkluderer en offisielt støttet binær eldre versjon og en nyere versjon fra kilden for hvert program. Det er imidlertid ikke nødvendig å kjøre alle trinnene nedenfor. Du kan bestemme om du vil ha den offisielt støttede binære eldre versjonen av LLVM & Clang, eller den nyere versjonen fra kilden, og kjøre den delen av instruksjonene som passer din avgjørelse.

Installer en offisielt støttet (eldre) versjon av LLVM & Clang

  1. VIKTIG! Installer først en offisielt støttet (eldre) versjon av GCC, ved å utføre trinnene i artikkelen Hvordan installere GCC på CentOS 6 -- du trenger IKKE å utføre trinnene under den artikkelens overskrift "Installer en nyere versjon av GCC fra kilden ".

  2. Installer LLVM & Clang

    sudo yum install clang
        --- This will bring in llvm as a dependency
    
  3. Sjekk de installerte versjonene og se plasseringene deres.

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

Installer en nyere versjon av LLVM & Clang fra kilden

For å bygge LLVM & Clang etter kilde på CentOS, må du ha GCC v4.7 eller nyere. CentOS 6 har ikke så høye versjoner i yum, så du må først installere en nyere GCC fra kilden.

  1. VIKTIG! Installer først en nyere versjon av GCC fra kilden, ved å utføre trinnene i artikkelen Hvordan installere GCC på CentOS 6 -- du MÅ utføre alle trinnene i den artikkelen, inkludert under overskriften "Installer en nyere versjon av GCC fra kilde".

  2. Installer ekstra nødvendige pakker.

    sudo yum install cmake
    
  3. Installer en nyere versjon av Python. LLVM & Clang v3.6.0 krever Python v2.7+, men CentOS 6 yum repository har bare 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. Bestem hvilken versjon av LLVM & Clang du vil ha. Denne kommandoen vil vise deg "taggene" for de tilgjengelige versjonene.

    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. Få kilden til versjonen av LLVM & Clang du vil ha. Dette vil gå i noen minutter. Resten av denne artikkelen er skrevet for RELEASE_360/og vil laste ned kildene til ~/sourceInstallations/llvm_RELEASE_360/-- Du må erstatte riktig tag for å passe fremtidige versjoner. Katalogene nedenfor for compiler-rt, libcxx, og libcxxabier ikke absolutt nødvendige, men inneholder noen av funksjonene som LLVM & Clang har som GCC ikke har, så de er inkludert i denne artikkelen. Det er andre LLVM "underprosjekter" du kan velge å bruke, for eksempel dragonegg, LLDB, OpenMB, vmkit, polly, libclc, klee, SAFECode og lld. Du kan lese om dem på LLVM-nettstedet .

    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. Dette vil gå en stund. Hvis dette fullføres riktig, vil den siste linjen du ser "suksess". Det er normalt å se noen feilmeldinger som ruller forbi raskt. Det er alltid en god idé å bygge ting i en annen katalog enn en kildekatalog.

    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. Sjekk de installerte versjonene og se plasseringene deres.

    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. Legg til de nye bibliotekene til ld (GNU-linkeren).

    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. Lag eventuelt et "hallo verden"-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. Bruk LLVM & Clang når du vil.

    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. Eventuelt gjenvinne plass på harddisken. Din ~/sourceInstallationsmappe vil være å ta opp rundt 11 GB diskplass. Det er sannsynligvis lurt å beholde mappene, siden det er valgfrie konfigurasjonsalternativer du kanskje må bruke på et tidspunkt i fremtiden, og det vil være raskere å ha mye allerede gjort. Og, som nevnt ovenfor, er det flere "delprosjekter" du kan legge til LLVM & Clang. Byggeprosessen lager også logger som du senere kan sjekke og jobbe fra hvis noe går galt. Men etter å ha kjørt "sudo make install" tidligere, er ikke din installerte LLVM & Clang avhengig av noe i denne katalogen, og plassen kan være på en premie, så du kan gjøre dette trinnet og gjenvinne 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 nå din nyere LLVM & Clang i /usr/local/bin, dine nyere 64-bit LLVM & Clang libs i /usr/local/lib, og dine nyere LLVM & Clang inkluderer filer i /usr/local/include.


Installer Plesk på CentOS 7

Installer Plesk på CentOS 7

Bruker du et annet system? Plesk er et proprietært kontrollpanel for webverten som lar brukere administrere sine personlige og/eller klienters nettsteder, databaser

Slik installerer du Squid Proxy på CentOS

Slik installerer du Squid Proxy på CentOS

Squid er et populært, gratis Linux-program som lar deg lage en webproxy for videresending. I denne veiledningen vil du se hvordan du installerer Squid på CentOS for å gjøre deg om

Slik installerer du Lighttpd (LLMP Stack) på CentOS 6

Slik installerer du Lighttpd (LLMP Stack) på CentOS 6

Introduksjon Lighttpd er en apachegaffel som har som mål å være mye mindre ressurskrevende. Den er lett, derav navnet, og er ganske enkel å bruke. Installer

Konfigurering av statisk nettverk og IPv6 på CentOS 7

Konfigurering av statisk nettverk og IPv6 på CentOS 7

VULTR har nylig gjort endringer på sin side, og alt skal nå fungere bra ut av boksen med NetworkManager aktivert. Skulle du ønske å deaktivere

Endring av Icinga2 for å bruke hoved-/klientmodell på CentOS 6 eller CentOS 7

Endring av Icinga2 for å bruke hoved-/klientmodell på CentOS 6 eller CentOS 7

Icinga2 er et kraftig overvåkingssystem, og når det brukes i en master-klient-modell, kan det erstatte behovet for NRPE-baserte overvåkingskontroller. Mester-klienten

Slik installerer du Apache Cassandra 3.11.x på CentOS 7

Slik installerer du Apache Cassandra 3.11.x på CentOS 7

Bruker du et annet system? Apache Cassandra er et gratis og åpen kildekode NoSQL-databasebehandlingssystem som er designet for å gi skalerbarhet, høy

Slik installerer du Microweber på CentOS 7

Slik installerer du Microweber på CentOS 7

Bruker du et annet system? Microweber er en åpen kildekode dra og slipp CMS og nettbutikk. Microweber-kildekoden er vert på GitHub. Denne guiden vil vise deg

Hvordan installere Vanilla Forum på CentOS 7

Hvordan installere Vanilla Forum på CentOS 7

Bruker du et annet system? Vanilla forum er en åpen kildekode-forumapplikasjon skrevet i PHP. Det er en fullt tilpassbar, enkel å bruke og støtter ekstern

Slik installerer du Mattermost 4.1 på CentOS 7

Slik installerer du Mattermost 4.1 på CentOS 7

Bruker du et annet system? Mattermost er et åpen kildekode, selvdrevet alternativ til Slack SAAS-meldingstjenesten. Med andre ord, med Mattermost kan du ca

Opprette et nettverk av Minecraft-servere med BungeeCord på Debian 8, Debian 9 eller CentOS 7

Opprette et nettverk av Minecraft-servere med BungeeCord på Debian 8, Debian 9 eller CentOS 7

Hva du trenger En Vultr VPS med minst 1 GB RAM. SSH-tilgang (med root/administratorrettigheter). Trinn 1: Installere BungeeCord Først

La oss kryptere på Plesk

La oss kryptere på Plesk

Plesk-kontrollpanelet har en veldig fin integrasjon for Lets Encrypt. Lets Encrypt er en av de eneste SSL-leverandørene som gir ut sertifikater komplett

La oss kryptere på cPanel

La oss kryptere på cPanel

Lets Encrypt er en sertifiseringsinstans dedikert til å tilby SSL-sertifikater gratis. cPanel har bygget en ryddig integrasjon slik at du og din klient

Hvordan installere Concrete5 på CentOS 7

Hvordan installere Concrete5 på CentOS 7

Bruker du et annet system? Concrete5 er et åpen kildekode CMS som tilbyr mange karakteristiske og nyttige funksjoner for å hjelpe redaktører med å produsere innhold enkelt og

Slik installerer du Review Board på CentOS 7

Slik installerer du Review Board på CentOS 7

Bruker du et annet system? Review Board er et gratis og åpen kildekodeverktøy for gjennomgang av kildekode, dokumentasjon, bilder og mye mer. Det er nettbasert programvare

Sett opp HTTP-autentisering med Nginx på CentOS 7

Sett opp HTTP-autentisering med Nginx på CentOS 7

I denne veiledningen lærer du hvordan du setter opp HTTP-autentisering for en Nginx-webserver som kjører på CentOS 7. Krav For å komme i gang trenger du

Slik installerer du GoAccess på CentOS 7

Slik installerer du GoAccess på CentOS 7

Bruker du et annet system? GoAccess er en åpen kildekode-nettlogganalysator. Du kan bruke den til analyse av logger på sanntidsbasis i enten terminalen eller

Hvordan installere YOURLS på CentOS 7

Hvordan installere YOURLS på CentOS 7

YOURLS (Your Own URL Shortener) er en åpen kildekode-applikasjon for URL-forkorting og dataanalyse. I denne artikkelen vil vi dekke installasjonsprosessen

Hvordan installere og konfigurere ArangoDB på CentOS 7

Hvordan installere og konfigurere ArangoDB på CentOS 7

Bruker du et annet system? Introduksjon ArangoDB er en åpen kildekode NoSQL-database med en fleksibel datamodell for dokumenter, grafer og nøkkelverdier. Det er

Bruke Etckeeper for versjonskontroll av /etc

Bruke Etckeeper for versjonskontroll av /etc

Innledning /etc/-katalogen spiller en kritisk rolle i måten et Linux-system fungerer på. Grunnen til dette er fordi nesten alle systemkonfigurasjoner

Hvorfor bør du bruke SSHFS? Hvordan montere et eksternt filsystem med SSHFS på CentOS 6

Hvorfor bør du bruke SSHFS? Hvordan montere et eksternt filsystem med SSHFS på CentOS 6

Mange systemadministratorer administrerer store mengder servere. Når filer må åpnes på tvers av forskjellige servere, logger du på hver enkelt individuelt ca

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Kunstig intelligens er ikke i fremtiden, det er her akkurat i nåtiden I denne bloggen Les hvordan kunstig intelligens-applikasjoner har påvirket ulike sektorer.

DDOS-angrep: en kort oversikt

DDOS-angrep: en kort oversikt

Er du også et offer for DDOS-angrep og forvirret over forebyggingsmetodene? Les denne artikkelen for å løse spørsmålene dine.

Har du noen gang lurt på hvordan hackere tjener penger?

Har du noen gang lurt på hvordan hackere tjener penger?

Du har kanskje hørt at hackere tjener mye penger, men har du noen gang lurt på hvordan tjener de den slags penger? la oss diskutere.

Revolusjonerende oppfinnelser fra Google som vil gjøre livet ditt enkelt.

Revolusjonerende oppfinnelser fra Google som vil gjøre livet ditt enkelt.

Vil du se revolusjonerende oppfinnelser fra Google og hvordan disse oppfinnelsene forandret livet til alle mennesker i dag? Les deretter til bloggen for å se oppfinnelser fra Google.

Fredag ​​Essential: Hva skjedde med AI-drevne biler?

Fredag ​​Essential: Hva skjedde med AI-drevne biler?

Konseptet med selvkjørende biler som skal ut på veiene ved hjelp av kunstig intelligens er en drøm vi har hatt en stund nå. Men til tross for flere løfter, er de ingen steder å se. Les denne bloggen for å lære mer...

Teknologisk singularitet: en fjern fremtid for menneskelig sivilisasjon?

Teknologisk singularitet: en fjern fremtid for menneskelig sivilisasjon?

Ettersom vitenskapen utvikler seg raskt og tar over mye av innsatsen vår, øker også risikoen for å utsette oss for en uforklarlig singularitet. Les hva singularitet kan bety for oss.

Evolusjon av datalagring – infografikk

Evolusjon av datalagring – infografikk

Lagringsmetodene for dataene har vært i utvikling kan være siden fødselen av dataene. Denne bloggen dekker utviklingen av datalagring på grunnlag av en infografikk.

Funksjonaliteter til Big Data Reference Architecture Layers

Funksjonaliteter til Big Data Reference Architecture Layers

Les bloggen for å kjenne ulike lag i Big Data Architecture og deres funksjoner på den enkleste måten.

6 fantastiske fordeler ved å ha smarte hjemmeenheter i livene våre

6 fantastiske fordeler ved å ha smarte hjemmeenheter i livene våre

I denne digitaldrevne verden har smarthusenheter blitt en avgjørende del av livet. Her er noen fantastiske fordeler med smarthusenheter om hvordan de gjør livet vårt verdt å leve og enklere.

macOS Catalina 10.15.4 tilleggsoppdatering forårsaker flere problemer enn å løse

macOS Catalina 10.15.4 tilleggsoppdatering forårsaker flere problemer enn å løse

Nylig lanserte Apple macOS Catalina 10.15.4 en tilleggsoppdatering for å fikse problemer, men det ser ut til at oppdateringen forårsaker flere problemer som fører til muring av mac-maskiner. Les denne artikkelen for å lære mer