Como instalar o LLVM e o Clang no CentOS 6

O LLVM é uma infraestrutura de compilador de código aberto. O LLVM foi iniciado em 2000 e tem sido amplamente utilizado e modificado pela Apple desde 2005. Clang é um compilador C, C ++, Objective-C e Objective-C ++ que funciona com o sistema LLVM. O Clang foi iniciado em 2007 pela Apple e, desde então, o Google e a Intel se envolveram em seu desenvolvimento contínuo.

Os desenvolvedores de Clang afirmam que, comparado ao GCC, ele compila mais rapidamente, usa menos memória, fornece diagnósticos mais amigáveis ​​ao usuário durante a compilação e é compatível com o GCC.

O CentOS segue o desenvolvimento do Red Hat Enterprise Linux (RHEL). O RHEL se esforça para ser uma plataforma de servidor estável, o que significa que não se apressa em incluir as versões mais recentes de tudo.

No momento da redação deste artigo, o CentOS 6 distribui oficialmente o LLVM & Clang v3.4.2. No entanto, o Clang v3.6 foi lançado.

A sugestão oficial é que, se você precisar de uma versão mais recente do LLVM & Clang, considere uma distribuição UNIX diferente, mais focada no suporte às versões mais recentes dos pacotes de software.

Felizmente, você pode instalar uma versão mais recente do LLVM & Clang GCC no CentOS. Isso se desvia do uso puramente do software distribuído oficialmente, mas às vezes você pode sentir que tem pouca escolha.

Este artigo descreve como instalar a versão oficialmente suportada pelo CentOS 6 do LLVM & Clang e como instalar uma versão mais recente. Este artigo pressupõe que você tenha um CentOS 6 VPS instalado recentemente, no entanto, certamente você pode seguir as instruções em um VPS que você já está usando.

Clang é em grande parte independente do GCC, mas a partir da escrita deste artigo, Clang ainda usa várias bibliotecas compartilhadas instalados pelo GCC (ou seja, crtbegin.o, gcc, e gcc_s). Se você instalar o LLVM & Clang no CentOS 6, não poderá compilar nada se também não tiver o GCC no seu sistema para essas bibliotecas compartilhadas. Idealmente, o yum teria uma dependência de pacote para clang do gcc e gcc-c ++, mas, na redação deste artigo, o yum não tem conhecimento da dependência.

Além disso, a criação de uma versão mais recente do LLVM & Clang a partir da fonte requer o G ++ v4.7 +, que você só pode acessar no CentOS 6 instalando-o pela fonte.

Se você executar todas as etapas abaixo, terá duas versões do GCC e duas versões do LLVM & Clang. Isso inclui uma versão mais antiga binária suportada oficialmente e uma versão mais recente da fonte para cada programa. No entanto, não há necessidade de executar todas as etapas abaixo. Você pode decidir se deseja a versão mais antiga binária do LLVM & Clang com suporte oficial ou a versão mais recente da fonte e executar a seção de instruções que melhor se adequar à sua decisão.

Instale uma versão (mais antiga) oficialmente suportada do LLVM & Clang

  1. IMPORTANTE! Primeiro, instale uma versão (mais antiga) oficialmente suportada do GCC, executando as etapas no artigo Como instalar o GCC no CentOS 6 - NÃO é necessário executar as etapas no cabeçalho desse artigo "Instalar uma versão mais recente do GCC a partir da fonte "

  2. Instale o LLVM & Clang

    sudo yum install clang
        --- This will bring in llvm as a dependency
    
  3. Verifique as versões instaladas e veja seus locais.

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

Instale uma versão mais recente do LLVM & Clang da fonte

Para criar o LLVM & Clang por fonte no CentOS, é necessário ter o GCC v4.7 ou superior. O CentOS 6 não possui essa versão alta no yum, portanto, primeiro você precisa instalar um GCC mais recente da fonte.

  1. IMPORTANTE! Primeiro, instale uma versão mais recente do GCC a partir da fonte, executando as etapas no artigo Como instalar o GCC no CentOS 6 - você precisará executar todas as etapas desse artigo, inclusive sob o título "Instalar uma versão mais recente do GCC a partir do código-fonte " fonte".

  2. Instale pacotes adicionais necessários.

    sudo yum install cmake
    
  3. Instale uma versão mais recente do Python. O LLVM & Clang v3.6.0 requer o Python v2.7 +, mas o repositório do CentOS 6 yum possui apenas o 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. Decida qual versão do LLVM e Clang você deseja. Este comando mostra as "tags" para as versões disponíveis.

    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. Obtenha a fonte da versão do LLVM & Clang que você deseja. Isso durará alguns minutos. O restante deste artigo foi escrito RELEASE_360/e fará o download das fontes para ~/sourceInstallations/llvm_RELEASE_360/- Você precisará substituir a tag apropriada para caber nas versões futuras. Os diretórios abaixo de compiler-rt, libcxxe libcxxabinão são absolutamente necessários, mas contêm algumas das características que LLVM & Clang tem que GCC não, por isso estão incluídas neste artigo. Existem outros "subprojetos" do LLVM que você pode usar, como dragonegg, LLDB, OpenMB, vmkit, polly, libclc, klee, SAFECode e lld. Você pode ler sobre aqueles no site da 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. Crie LLVM e Clang. Isso funcionará por um tempo. Se isso for concluído corretamente, a última linha que você verá dirá "sucesso". É normal ver algumas mensagens de erro rolando rapidamente. É sempre uma boa ideia criar coisas em um diretório diferente do diretório de origem.

    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. Verifique as versões instaladas e veja seus locais.

    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. Adicione as novas bibliotecas ao ld (o vinculador 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. Opcionalmente, faça um programa "olá mundo".

    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. Use LLVM e Clang quando quiser.

    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. Recupere opcionalmente o espaço no disco rígido. Sua ~/sourceInstallationspasta ocupará cerca de 11 GB de espaço em disco. Provavelmente, é aconselhável manter as pastas, pois há opções de configuração opcionais que você pode precisar usar em algum momento no futuro, e seria mais rápido ter muito já feito. E, como mencionado acima, existem "subprojetos" adicionais que você pode adicionar ao LLVM & Clang. Além disso, o processo de compilação cria logs dos quais você pode verificar e trabalhar posteriormente se algo der errado. Mas, depois de executar o "sudo make install" anteriormente, o LLVM & Clang instalado não depende de nada neste diretório, e o espaço pode ser muito alto, portanto você pode executar esta etapa e recuperar os 11 GB.

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

Agora você tem seu LLVM & Clang /usr/local/binmais recente, suas bibliotecas LLVM & Clang mais recentes de 64 bits /usr/local/libe o LLVM & Clang mais recente inclui arquivos /usr/local/include.



Leave a Comment

A IA pode lutar contra o aumento do número de ataques de ransomware

A IA pode lutar contra o aumento do número de ataques de ransomware

Os ataques de ransomware estão aumentando, mas a IA pode ajudar a lidar com os vírus de computador mais recentes? AI é a resposta? Leia aqui para saber se é AI boone ou bane

ReactOS: Este é o futuro do Windows?

ReactOS: Este é o futuro do Windows?

ReactOS, um sistema operacional de código aberto e gratuito está aqui com a versão mais recente. Será que ela pode atender às necessidades dos usuários modernos do Windows e derrubar a Microsoft? Vamos descobrir mais sobre esse estilo antigo, mas uma experiência de sistema operacional mais recente.

Fique conectado por meio do aplicativo WhatsApp Desktop 24 * 7

Fique conectado por meio do aplicativo WhatsApp Desktop 24 * 7

O Whatsapp finalmente lançou o aplicativo Desktop para usuários de Mac e Windows. Agora você pode acessar o Whatsapp do Windows ou Mac facilmente. Disponível para Windows 8+ e Mac OS 10.9+

Como a IA pode levar a automação de processos ao próximo nível?

Como a IA pode levar a automação de processos ao próximo nível?

Leia isto para saber como a Inteligência Artificial está se tornando popular entre as empresas de pequena escala e como está aumentando as probabilidades de fazê-las crescer e dar vantagem a seus concorrentes.

A atualização do suplemento do macOS Catalina 10.15.4 está causando mais problemas do que resolvendo

A atualização do suplemento do macOS Catalina 10.15.4 está causando mais problemas do que resolvendo

Recentemente, a Apple lançou o macOS Catalina 10.15.4, uma atualização suplementar para corrigir problemas, mas parece que a atualização está causando mais problemas, levando ao bloqueio de máquinas mac. Leia este artigo para saber mais

13 Ferramentas de Extração de Dados Comerciais de Big Data

13 Ferramentas de Extração de Dados Comerciais de Big Data

13 Ferramentas de Extração de Dados Comerciais de Big Data

O que é um sistema de arquivos de registro no diário e como ele funciona?

O que é um sistema de arquivos de registro no diário e como ele funciona?

Nosso computador armazena todos os dados de uma maneira organizada conhecida como sistema de arquivos Journaling. É um método eficiente que permite ao computador pesquisar e exibir arquivos assim que você clicar em search.https: //wethegeek.com/? P = 94116 & preview = true

Singularidade tecnológica: um futuro distante da civilização humana?

Singularidade tecnológica: um futuro distante da civilização humana?

À medida que a ciência evolui em um ritmo rápido, assumindo muitos de nossos esforços, os riscos de nos sujeitarmos a uma singularidade inexplicável também aumentam. Leia, o que a singularidade pode significar para nós.

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

O impacto da inteligência artificial na saúde 2021

O impacto da inteligência artificial na saúde 2021

A IA na área da saúde deu grandes saltos nas últimas décadas. Portanto, o futuro da IA ​​na área da saúde ainda está crescendo dia a dia.