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

Configure sua própria rede privada com o OpenVPN

Configure sua própria rede privada com o OpenVPN

O Vultr oferece uma incrível conectividade de rede privada para servidores executando no mesmo local. Mas às vezes você quer dois servidores em países diferentes

Como instalar e configurar o CyberPanel no servidor CentOS 7

Como instalar e configurar o CyberPanel no servidor CentOS 7

Usando um sistema diferente? Introdução O CyberPanel é um dos primeiros painéis de controle do mercado, tanto de código aberto quanto de OpenLiteSpeed. What thi

Instale o eSpeak no CentOS 7

Instale o eSpeak no CentOS 7

Usando um sistema diferente? O ESpeak pode gerar arquivos de áudio de conversão de texto em fala (TTS). Isso pode ser útil por vários motivos, como criar seu próprio Turim

Monitore seus dispositivos usando o LibreNMS no CentOS 7

Monitore seus dispositivos usando o LibreNMS no CentOS 7

Usando um sistema diferente? O LibreNMS é um sistema de monitoramento de rede de código aberto completo. Ele usa o SNMP para obter os dados de diferentes dispositivos. Uma variedade

Como usar o Sudo no Debian, CentOS e FreeBSD

Como usar o Sudo no Debian, CentOS e FreeBSD

Usar um usuário sudo para acessar um servidor e executar comandos no nível raiz é uma prática muito comum entre o Linux e o Unix Systems Administrator. O uso de um sud

Como instalar o RabbitMQ no CentOS 7

Como instalar o RabbitMQ no CentOS 7

Usando um sistema diferente? O RabbitMQ é um intermediário de mensagens de código aberto amplamente usado, escrito na linguagem de programação Erlang. Como um middleware orientado a mensagens

Configurar o Nginx-RTMP no CentOS 7

Configurar o Nginx-RTMP no CentOS 7

Usando um sistema diferente? O RTMP é ótimo para veicular conteúdo ao vivo. Quando o RTMP é emparelhado com o FFmpeg, os fluxos podem ser convertidos em várias qualidades. Vultr i

Como instalar o Gradle no CentOS 7

Como instalar o Gradle no CentOS 7

Usando um sistema diferente? Gradle é um conjunto de ferramentas de automação de compilação de código aberto e gratuito baseado nos conceitos do Apache Ant e Apache Maven. Gradle fornece

Instale um servidor FTP com ProFTPd no CentOS 6 ou CentOS 7

Instale um servidor FTP com ProFTPd no CentOS 6 ou CentOS 7

Usando um sistema diferente? Neste guia, veremos como configurar um servidor FTP (ProFTPd) para transferir arquivos entre o seu PC e o seu servidor.

Instalando o Netdata no CentOS 7

Instalando o Netdata no CentOS 7

Usando um sistema diferente? O Netdata é uma estrela em ascensão no campo do monitoramento de métricas do sistema em tempo real. Comparado com outras ferramentas do mesmo tipo, o Netdata:

Como instalar o Apache Cassandra 3.11.x no CentOS 7

Como instalar o Apache Cassandra 3.11.x no CentOS 7

Usando um sistema diferente? O Apache Cassandra é um sistema de gerenciamento de banco de dados NoSQL gratuito e de código aberto, projetado para fornecer escalabilidade, alta

Como instalar um servidor Just Cause 2 (JC2-MP) no CentOS 7

Como instalar um servidor Just Cause 2 (JC2-MP) no CentOS 7

Neste tutorial, aprenda como configurar um servidor multiplayer Just Cause 2. Pré-requisitos Verifique se o sistema está totalmente atualizado antes de começarmos

Como instalar o servidor Starbound no CentOS 7

Como instalar o servidor Starbound no CentOS 7

Usando um sistema diferente? Neste tutorial, explicarei como configurar um servidor Starbound no CentOS 7. Pré-requisitos Você precisa ser o proprietário deste jogo

Instalando e configurando o ZNC no CentOS 7

Instalando e configurando o ZNC no CentOS 7

O ZNC é um segurança IRC gratuito e de código aberto que permanece permanentemente conectado a uma rede para que os clientes possam receber mensagens enviadas enquanto estiverem offline. Thi

Como instalar o Django no CentOS 7

Como instalar o Django no CentOS 7

O Django é uma estrutura Python popular para escrever aplicativos da web. Com o Django, você pode criar aplicativos mais rapidamente, sem reinventar a roda. Se você quiser você

Como instalar o CMS de outubro no CentOS 7

Como instalar o CMS de outubro no CentOS 7

Outubro é um sistema de gerenciamento de conteúdo de código aberto baseado no Laravel PHP Framework. Com uma interface elegante e uma arquitetura modular concisa

Como configurar a autenticação de dois fatores (2FA) para SSH no CentOS 6 usando o Google Authenticator

Como configurar a autenticação de dois fatores (2FA) para SSH no CentOS 6 usando o Google Authenticator

Após alterar a porta SSH, configurar a batida na porta e fazer outros ajustes para a segurança SSH, talvez haja mais uma maneira de protegê-lo

Como instalar o MyCLI no Linux (CentOS, Debian, Fedora e Ubuntu)

Como instalar o MyCLI no Linux (CentOS, Debian, Fedora e Ubuntu)

Introdução O MyCLI é um cliente de linha de comando para MySQL e MariaDB que permite concluir automaticamente e ajuda na sintaxe de seus comandos SQL. MyCL

Como instalar o Directus 6.4 CMS em um CentOS 7 LAMP VPS

Como instalar o Directus 6.4 CMS em um CentOS 7 LAMP VPS

Usando um sistema diferente? O Directus 6.4 CMS é um sistema de gerenciamento de conteúdo sem cabeça (CMS) poderoso e flexível, gratuito e de código aberto que fornece

Como instalar o Reader Self 3.5 RSS Reader em um CentOS 7 LAMP VPS

Como instalar o Reader Self 3.5 RSS Reader em um CentOS 7 LAMP VPS

Usando um sistema diferente? O Reader Self 3.5 é um leitor de RSS auto-hospedado, simples e flexível, gratuito e de código aberto, e uma alternativa ao Google Reader. Leitor Sel

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.