Come installare LLVM e Clang su CentOS 6

LLVM è un'infrastruttura di compilazione open source. LLVM è stato avviato nel 2000 ed è stato ampiamente utilizzato e modificato da Apple dal 2005. Clang è un compilatore C, C ++, Objective-C e Objective-C ++ che funziona con il sistema LLVM. Clang è stata avviata nel 2007 da Apple e da allora Google e Intel sono state coinvolte nel suo continuo sviluppo.

Gli sviluppatori di Clang affermano che rispetto a GCC, si compila più velocemente, utilizza meno memoria, offre una diagnostica più intuitiva durante la compilazione ed è compatibile con GCC.

CentOS segue lo sviluppo di Red Hat Enterprise Linux (RHEL). RHEL si sforza di essere una piattaforma server stabile, il che significa che non ha fretta di includere le ultime versioni di tutto.

Al momento della stesura di questo articolo, CentOS 6 distribuisce ufficialmente LLVM e Clang v3.4.2. Tuttavia, Clang v3.6 è stato rilasciato.

Il suggerimento ufficiale è che se hai bisogno di una versione più recente di LLVM e Clang, dovresti prendere in considerazione una diversa distribuzione UNIX che è più focalizzata sul supporto delle ultime versioni dei pacchetti software.

Fortunatamente, è possibile installare una versione più recente di LLVM e Clang GCC su CentOS. Ciò si discosta dall'usare semplicemente il software distribuito ufficialmente, ma a volte potresti avere poca scelta.

Questo articolo descrive come installare la versione ufficialmente supportata da CentOS 6 di LLVM e Clang e come installare una versione più recente. Questo articolo presuppone che tu abbia un CentOS 6 appena installato, tuttavia puoi certamente seguire le istruzioni su un VPS che hai già utilizzato.

Clang è in gran parte indipendente dal GCC, ma come della scrittura di questo articolo, Clang utilizza ancora diverse librerie condivise installati da GCC (vale a dire, crtbegin.o, gcc, e gcc_s). Se installi LLVM e Clang su CentOS 6, non sarai in grado di compilare nulla se non hai anche GCC sul tuo sistema per queste librerie condivise. Idealmente, yum avrebbe una dipendenza pacchetto per clang di gcc e gcc-c ++, ma al momento della stesura di questo articolo, yum non è a conoscenza della dipendenza.

Inoltre, la creazione di una versione più recente di LLVM e Clang dal sorgente richiede G ++ v4.7 +, che puoi ottenere solo su CentOS 6 installandolo dal sorgente.

Se esegui tutti i passaggi seguenti, finirai con 2 versioni di GCC e 2 versioni di LLVM e Clang. Ciò include una versione precedente binaria supportata ufficialmente e una versione più recente dall'origine per ciascun programma. Tuttavia, non è necessario eseguire tutti i passaggi seguenti. Puoi decidere se desideri la versione binaria più vecchia supportata ufficialmente di LLVM & Clang o la versione più recente dal sorgente ed eseguire la sezione di istruzioni adatta alla tua decisione.

Installa una versione ufficialmente supportata (precedente) di LLVM e Clang

  1. IMPORTANTE! Innanzitutto, installa una versione (più vecchia) ufficialmente supportata di GCC, eseguendo i passaggi nell'articolo Come installare GCC su CentOS 6 - NON è necessario eseguire i passaggi sotto il titolo dell'articolo "Installa una versione più recente di GCC dall'origine ".

  2. Installa LLVM e Clang

    sudo yum install clang
        --- This will bring in llvm as a dependency
    
  3. Controlla le versioni installate e vedi le loro posizioni.

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

Installa una versione più recente di LLVM e Clang dall'origine

Per costruire LLVM e Clang per sorgente su CentOS, devi avere GCC v4.7 o successivo. CentOS 6 non ha una versione così alta in yum, quindi devi prima installare un GCC più recente dal sorgente.

  1. IMPORTANTE! Innanzitutto, installa una versione più recente di GCC dall'origine, eseguendo i passaggi nell'articolo Come installare GCC su CentOS 6 - DEVI eseguire tutti i passaggi in quell'articolo, incluso il titolo "Installa una versione più recente di GCC da fonte".

  2. Installa pacchetti aggiuntivi richiesti.

    sudo yum install cmake
    
  3. Installa una versione più recente di Python. LLVM e Clang v3.6.0 richiedono Python v2.7 +, ma il repository yum CentOS 6 ha solo 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. Decidi quale versione di LLVM e Clang desideri. Questo comando ti mostrerà i "tag" per le versioni disponibili.

    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. Ottieni la fonte della versione di LLVM e Clang che desideri. Questo durerà per alcuni minuti. Il resto di questo articolo è stato scritto RELEASE_360/e scaricherà i sorgenti in ~/sourceInstallations/llvm_RELEASE_360/- Dovrai sostituire il tag appropriato per adattarlo alle versioni future. Le directory sottostanti di compiler-rt, libcxxe libcxxabinon sono assolutamente necessarie, ma contengono alcune delle funzionalità di LLVM e Clang che GCC non ha, quindi sono incluse in questo articolo. Esistono altri "sottoprogetti" LLVM che è possibile scegliere di utilizzare, come dragonegg, LLDB, OpenMB, vmkit, polly, libclc, klee, SAFECode e lld. Puoi leggere quelli sul sito web LLVM .

    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. Costruisci LLVM e Clang. Questo durerà per un po '. Se questo si completa correttamente, l'ultima riga che vedrai dirà "successo". È normale vedere scorrere rapidamente alcuni messaggi dall'aspetto errato. È sempre una buona idea costruire cose in una directory diversa rispetto a una directory di origine.

    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. Controlla le versioni installate e vedi le loro posizioni.

    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. Aggiungi le nuove librerie a ld (il linker GNU).

    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. Facoltativamente, crea un programma "ciao mondo".

    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. Usa LLVM e Clang quando vuoi.

    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. Facoltativamente, recuperare spazio sul disco rigido. La ~/sourceInstallationscartella occuperà circa 11 GB di spazio su disco. Probabilmente è saggio conservare le cartelle, in quanto in futuro potrebbero essere necessarie opzioni di configurazione opzionali, e sarebbe più veloce fare molto. E, come detto sopra, ci sono ulteriori "sottoprogetti" che puoi aggiungere a LLVM e Clang. Inoltre, il processo di creazione crea registri che è possibile controllare e lavorare in seguito se qualcosa va storto. Ma, dopo aver eseguito "sudo make install" in precedenza, LLVM e Clang installati non dipendono da nulla in questa directory, e lo spazio può essere un premio, quindi puoi fare questo passo e recuperare gli 11GB.

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

Ora hai il tuo nuovo LLVM & Clang /usr/local/bin, le tue nuove librerie LLVM e Clang a 64 bit /usr/local/libe i tuoi nuovi LLVM e Clang includono i file /usr/local/include.



Leave a Comment

Come installare e configurare CyberPanel sul server CentOS 7

Come installare e configurare CyberPanel sul server CentOS 7

Usi un sistema diverso? Introduzione CyberPanel è uno dei primi pannelli di controllo sul mercato che è sia open source che utilizza OpenLiteSpeed. Che cosa

Come installare e configurare Sensu Monitoring su CentOS 7

Come installare e configurare Sensu Monitoring su CentOS 7

Introduzione Sensu è una soluzione di monitoraggio gratuita e open source che può essere utilizzata per monitorare server, applicazioni e vari servizi di sistema. Sensu i

Come installare OpenMeetings su CentOS 7

Come installare OpenMeetings su CentOS 7

Usi un sistema diverso? Apache OpenMeetings è unapplicazione per conferenze Web open source. È scritto in Java e supporta più server di database. io

Come usare Sudo su Debian, CentOS e FreeBSD

Come usare Sudo su Debian, CentOS e FreeBSD

Luso di un utente sudo per accedere a un server ed eseguire comandi a livello di root è una pratica molto comune tra Linux e Unix Systems Administrator. Luso di un sud

Come installare RabbitMQ su CentOS 7

Come installare RabbitMQ su CentOS 7

Usando un sistema diverso? RabbitMQ è un broker di messaggi open source ampiamente utilizzato scritto nel linguaggio di programmazione Erlang. Come middleware orientato ai messaggi

Installazione di Nginx-RTMP su CentOS 7

Installazione di Nginx-RTMP su CentOS 7

Usi un sistema diverso? RTMP è ottimo per pubblicare contenuti live. Quando RTMP è associato a FFmpeg, i flussi possono essere convertiti in varie qualità. Vultr i

Come installare TaskBoard 0.3.1 su CentOS 7

Come installare TaskBoard 0.3.1 su CentOS 7

TaskBoard è unapp Web di gestione del tempo gratuita e open source. Ispirato da Kanban, TaskBoard può aiutarti a tenere traccia delle cose che devono essere fatte in a

Come installare Gradle su CentOS 7

Come installare Gradle su CentOS 7

Usi un sistema diverso? Gradle è un set di strumenti di automazione di build gratuito e open source basato sui concetti di Apache Ant e Apache Maven. Gradle fornisce

Installa un server FTP con ProFTPd su CentOS 6 o CentOS 7

Installa un server FTP con ProFTPd su CentOS 6 o CentOS 7

Usi un sistema diverso? In questa guida, vedremo come configurare un server FTP (ProFTPd) per trasferire file tra il tuo PC e il tuo server.

Installazione di Netdata su CentOS 7

Installazione di Netdata su CentOS 7

Usando un sistema diverso? Netdata è una stella nascente nel campo del monitoraggio delle metriche di sistema in tempo reale. Rispetto ad altri strumenti dello stesso tipo, Netdata:

Come installare Apache Cassandra 3.11.x su CentOS 7

Come installare Apache Cassandra 3.11.x su CentOS 7

Usi un sistema diverso? Apache Cassandra è un sistema di gestione di database NoSQL gratuito e open source progettato per fornire scalabilità, alta

Come installare Just Cause 2 (JC2-MP) Server su CentOS 7

Come installare Just Cause 2 (JC2-MP) Server su CentOS 7

In questo tutorial imparerai bene come configurare un server multiplayer Just Cause 2. Prerequisiti Assicurarsi che il sistema sia completamente aggiornato prima di iniziare

Come installare Starbound Server su CentOS 7

Come installare Starbound Server su CentOS 7

Usando un sistema diverso? In questo tutorial, spiegherò come impostare un server Starbound su CentOS 7. Prerequisiti Devi possedere questo gioco su di te

Installazione e configurazione di ZNC su CentOS 7

Installazione e configurazione di ZNC su CentOS 7

ZNC è un buttafuori IRC gratuito e open source che rimane permanentemente connesso a una rete in modo che i client possano ricevere messaggi inviati mentre sono offline. Thi

Come installare Django su CentOS 7

Come installare Django su CentOS 7

Django è un popolare framework Python per la scrittura di applicazioni Web. Con Django, puoi creare applicazioni più velocemente, senza reinventare la ruota. Se vuoi

Come impostare lautenticazione a due fattori (2FA) per SSH su CentOS 6 utilizzando Google Authenticator

Come impostare lautenticazione a due fattori (2FA) per SSH su CentOS 6 utilizzando Google Authenticator

Dopo aver modificato la porta SSH, configurato il port knocking e apportato altre modifiche per la sicurezza SSH, cè forse un altro modo per proteggerti

Come installare MyCLI su Linux (CentOS, Debian, Fedora e Ubuntu)

Come installare MyCLI su Linux (CentOS, Debian, Fedora e Ubuntu)

Introduzione MyCLI è un client da riga di comando per MySQL e MariaDB che ti consente di completare automaticamente e ti aiuta con la sintassi dei tuoi comandi SQL. MyCL

Come installare Directus 6.4 CMS su un VPS CentOS 7 LAMP

Come installare Directus 6.4 CMS su un VPS CentOS 7 LAMP

Usi un sistema diverso? Directus 6.4 CMS è un sistema di gestione dei contenuti senza testa (CMS) potente e flessibile, gratuito e open source che fornisce agli sviluppatori

Creare una rete di server Minecraft con BungeeCord su Debian 8, Debian 9 o CentOS 7

Creare una rete di server Minecraft con BungeeCord su Debian 8, Debian 9 o CentOS 7

Cosa ti serve Un VPS Vultr con almeno 1 GB di RAM. Accesso SSH (con privilegi di root / amministrativi). Passaggio 1: installare prima BungeeCord

Come installare MaraDNS su CentOS 6

Come installare MaraDNS su CentOS 6

MaraDNS è un programma server DNS open source leggero ma robusto. Rispetto ad altre applicazioni dello stesso tipo, come ISC BIND, PowerDNS e djbdns

Lintelligenza artificiale può combattere con un numero crescente di attacchi ransomware?

Lintelligenza artificiale può combattere con un numero crescente di attacchi ransomware?

Gli attacchi ransomware sono in aumento, ma l'intelligenza artificiale può aiutare ad affrontare l'ultimo virus informatico? L'intelligenza artificiale è la risposta? Leggi qui sai è AI boone o bane

ReactOS: è questo il futuro di Windows?

ReactOS: è questo il futuro di Windows?

ReactOS, un sistema operativo open source e gratuito è qui con l'ultima versione. Può essere sufficiente alle esigenze degli utenti Windows moderni e abbattere Microsoft? Scopriamo di più su questo vecchio stile, ma un'esperienza del sistema operativo più recente.

Rimani connesso tramite lapp desktop WhatsApp 24*7

Rimani connesso tramite lapp desktop WhatsApp 24*7

Whatsapp ha finalmente lanciato l'app desktop per utenti Mac e Windows. Ora puoi accedere facilmente a Whatsapp da Windows o Mac. Disponibile per Windows 8+ e Mac OS 10.9+

In che modo lintelligenza artificiale può portare lautomazione dei processi al livello successivo?

In che modo lintelligenza artificiale può portare lautomazione dei processi al livello successivo?

Leggi questo per sapere come l'intelligenza artificiale sta diventando popolare tra le aziende di piccole dimensioni e come sta aumentando le probabilità di farle crescere e dare un vantaggio ai loro concorrenti.

Laggiornamento del supplemento macOS Catalina 10.15.4 sta causando più problemi che risolverli

Laggiornamento del supplemento macOS Catalina 10.15.4 sta causando più problemi che risolverli

Recentemente Apple ha rilasciato macOS Catalina 10.15.4 un aggiornamento supplementare per risolvere i problemi, ma sembra che l'aggiornamento stia causando più problemi che portano al bricking delle macchine mac. Leggi questo articolo per saperne di più

13 strumenti commerciali per lestrazione dei dati dai Big Data

13 strumenti commerciali per lestrazione dei dati dai Big Data

13 strumenti commerciali per l'estrazione dei dati dai Big Data

Che cosè un file system di journaling e come funziona?

Che cosè un file system di journaling e come funziona?

Il nostro computer memorizza tutti i dati in un modo organizzato noto come file system di journaling. È un metodo efficiente che consente al computer di cercare e visualizzare i file non appena si preme search.https://wethegeek.com/?p=94116&preview=true

Singolarità tecnologica: un lontano futuro della civiltà umana?

Singolarità tecnologica: un lontano futuro della civiltà umana?

Man mano che la scienza si evolve a un ritmo rapido, assumendo gran parte dei nostri sforzi, aumentano anche i rischi di sottoporci a una singolarità inspiegabile. Leggi, cosa potrebbe significare per noi la singolarità.

Uno sguardo a 26 tecniche di analisi dei Big Data: Parte 1

Uno sguardo a 26 tecniche di analisi dei Big Data: Parte 1

Uno sguardo a 26 tecniche di analisi dei Big Data: Parte 1

Limpatto dellintelligenza artificiale nella sanità 2021

Limpatto dellintelligenza artificiale nella sanità 2021

L'intelligenza artificiale nell'assistenza sanitaria ha compiuto grandi passi avanti negli ultimi decenni. Pertanto, il futuro dell'IA in sanità continua a crescere giorno dopo giorno.