Cómo instalar LLVM y Clang en CentOS 6

LLVM es una infraestructura compiladora de código abierto. LLVM se inició en 2000, y Apple lo ha usado y modificado ampliamente desde 2005. Clang es un compilador C, C ++, Objective-C y Objective-C ++ que funciona con el sistema LLVM. Clang se inició en 2007 por Apple, y desde entonces Google e Intel se han involucrado en su desarrollo continuo.

Los desarrolladores de Clang afirman que, en comparación con GCC, se compila más rápido, usa menos memoria, ofrece diagnósticos más fáciles de usar durante la compilación y es compatible con GCC.

CentOS sigue el desarrollo de Red Hat Enterprise Linux (RHEL). RHEL se esfuerza por ser una plataforma de servidor estable, lo que significa que no se apresura a incluir las últimas versiones de todo.

Al momento de escribir este artículo, CentOS 6 distribuye oficialmente LLVM & Clang v3.4.2. Sin embargo, Clang v3.6 ha sido lanzado.

La sugerencia oficial es que si necesita una versión más reciente de LLVM & Clang, debería considerar una distribución UNIX diferente que esté más enfocada en soportar las últimas versiones de paquetes de software.

Afortunadamente, puede instalar una versión más reciente LLVM & Clang GCC en CentOS. Esto se desvía del uso exclusivo del software distribuido oficialmente, pero a veces puede parecer que tiene pocas opciones.

Este artículo describe cómo instalar la versión oficialmente compatible de CentOS 6 de LLVM & Clang, y cómo instalar una versión más nueva. Este artículo asume que tiene un VPS CentOS 6 recién instalado, sin embargo, ciertamente puede seguir las instrucciones en un VPS que ya ha estado utilizando.

Sonido metálico es en gran medida independiente de GCC, pero a partir de la redacción de este artículo, sonido metálico todavía utiliza varias bibliotecas compartidas instaladas por GCC (a saber, crtbegin.o, gcc, y gcc_s). Si instala LLVM & Clang en CentOS 6, no podrá compilar nada si no tiene GCC en su sistema para estas bibliotecas compartidas. Idealmente, yum tendría una dependencia de paquete para el sonido de gcc y gcc-c ++, pero a partir de la redacción de este artículo, yum desconoce la dependencia.

Además, crear una versión más nueva de LLVM y Clang desde la fuente requiere G ++ v4.7 +, que solo puede obtener en CentOS 6 al instalarlo por fuente.

Si ejecuta todos los pasos a continuación, terminará con 2 versiones de GCC y 2 versiones de LLVM & Clang. Esto incluye una versión anterior binaria oficialmente compatible y una versión más nueva de la fuente para cada programa. Sin embargo, no es necesario ejecutar todos los pasos a continuación. Puede decidir si desea la versión anterior binaria oficialmente admitida de LLVM & Clang, o la versión más reciente de la fuente, y ejecutar la sección de instrucciones que corresponda a su decisión.

Instale una versión oficialmente compatible (anterior) de LLVM y Clang

  1. ¡IMPORTANTE! Primero, instale una versión oficialmente admitida (anterior) de GCC, siguiendo los pasos del artículo Cómo instalar GCC en CentOS 6 ; NO es necesario que realice los pasos bajo el encabezado de ese artículo "Instale una versión más nueva de GCC desde la fuente ".

  2. Instalar LLVM y Clang

    sudo yum install clang
        --- This will bring in llvm as a dependency
    
  3. Verifique las versiones instaladas y vea sus ubicaciones.

    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 una versión más nueva de LLVM y Clang desde la fuente

Para construir LLVM y Clang por fuente en CentOS, debe tener GCC v4.7 o superior. CentOS 6 no tiene una versión tan alta en yum, por lo que primero debe instalar un GCC más reciente desde la fuente.

  1. ¡IMPORTANTE! Primero, instale una versión más reciente de GCC desde el código fuente, siguiendo los pasos del artículo Cómo instalar GCC en CentOS 6 : DEBE realizar todos los pasos en ese artículo, incluso bajo el encabezado "Instalar una versión más reciente de GCC desde fuente".

  2. Instalar paquetes adicionales necesarios.

    sudo yum install cmake
    
  3. Instale una versión más nueva de Python. LLVM & Clang v3.6.0 requiere Python v2.7 +, pero el repositorio de CentOS 6 yum solo tiene 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. Decide qué versión de LLVM y Clang quieres. Este comando le mostrará las "etiquetas" para las versiones disponibles.

    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. Obtenga la fuente de la versión de LLVM & Clang que desee. Esto durará unos minutos. El resto de este artículo está escrito RELEASE_360/y descargará las fuentes en ~/sourceInstallations/llvm_RELEASE_360/: tendrá que sustituir la etiqueta adecuada para que se ajuste a futuras versiones. Los directorios a continuación de compiler-rt, libcxxy libcxxabino son absolutamente necesarios, pero contienen algunas de las características que tiene LLVM y Clang que GCC no tiene, por lo que se incluyen en este artículo. Hay otros "subproyectos" de LLVM que puede elegir usar, como dragonegg, LLDB, OpenMB, vmkit, polly, libclc, klee, SAFECode y lld. Puede leer sobre ellos en el sitio web de 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. Construir LLVM y Clang. Esto se ejecutará por un tiempo. Si esto se completa correctamente, la última línea que verá dirá "éxito". Es normal ver que algunos mensajes con aspecto de error se desplazan rápidamente. Siempre es una buena idea construir cosas en un directorio diferente que un directorio de origen.

    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 las versiones instaladas y vea sus ubicaciones.

    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. Agregue las nuevas bibliotecas a ld (el enlazador 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, haga un programa "hola 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 y Clang cuando lo desee.

    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. Opcionalmente reclamar espacio en el disco duro. Su ~/sourceInstallationscarpeta ocupará alrededor de 11 GB de espacio en disco. Probablemente sea aconsejable mantener las carpetas, ya que hay opciones de configuración opcionales que puede necesitar usar en algún momento en el futuro, y sería más rápido tener muchas cosas ya hechas. Y, como se mencionó anteriormente, hay "subproyectos" adicionales que puede agregar a LLVM & Clang. Además, el proceso de compilación crea registros que luego puede verificar y trabajar si algo sale mal. Pero, después de ejecutar "sudo make install" anteriormente, su LLVM & Clang instalado no depende de nada en este directorio, y el espacio puede ser escaso, por lo que puede hacer este paso y reclamar los 11 GB.

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

Ahora tiene su LLVM y Clang más nuevos, sus nuevas bibliotecas LLVM y Clang de /usr/local/bin64 bits /usr/local/lib, y sus nuevas LLVM y Clang incluyen archivos /usr/local/include.



Leave a Comment

ZPanel y Sentora en CentOS 6 x64

ZPanel y Sentora en CentOS 6 x64

ZPanel, un panel de control de alojamiento web popular, se bifurcó en 2014 a un nuevo proyecto llamado Sentora. Aprende a instalar Sentora en tu servidor con este tutorial.

Cómo instalar Vtiger CRM Open Source Edition en CentOS 7

Cómo instalar Vtiger CRM Open Source Edition en CentOS 7

Aprende cómo instalar Vtiger CRM, una aplicación de gestión de relaciones con el cliente, en CentOS 7 para aumentar tus ventas y mejorar el servicio al cliente.

Cómo instalar el servidor Counter-Strike 1.6 en Linux

Cómo instalar el servidor Counter-Strike 1.6 en Linux

Esta guía completa le mostrará cómo configurar un servidor Counter-Strike 1.6 en Linux, optimizando el rendimiento y la seguridad para el mejor juego. Aprende los pasos más recientes aquí.

¿Puede la IA luchar con un número cada vez mayor de ataques de ransomware?

¿Puede la IA luchar con un número cada vez mayor de ataques de ransomware?

Los ataques de ransomware van en aumento, pero ¿puede la IA ayudar a lidiar con el último virus informático? ¿Es la IA la respuesta? Lea aquí, sepa que la IA es una bendición o una perdición

ReactOS: ¿Es este el futuro de Windows?

ReactOS: ¿Es este el futuro de Windows?

ReactOS, un sistema operativo de código abierto y gratuito, está aquí con la última versión. ¿Puede satisfacer las necesidades de los usuarios de Windows de hoy en día y acabar con Microsoft? Averigüemos más sobre este estilo antiguo, pero una experiencia de sistema operativo más nueva.

Manténgase conectado a través de la aplicación de escritorio WhatsApp 24 * 7

Manténgase conectado a través de la aplicación de escritorio WhatsApp 24 * 7

Whatsapp finalmente lanzó la aplicación de escritorio para usuarios de Mac y Windows. Ahora puede acceder a Whatsapp desde Windows o Mac fácilmente. Disponible para Windows 8+ y Mac OS 10.9+

¿Cómo puede la IA llevar la automatización de procesos al siguiente nivel?

¿Cómo puede la IA llevar la automatización de procesos al siguiente nivel?

Lea esto para saber cómo la Inteligencia Artificial se está volviendo popular entre las empresas de pequeña escala y cómo está aumentando las probabilidades de hacerlas crecer y dar ventaja a sus competidores.

La actualización complementaria de macOS Catalina 10.15.4 está causando más problemas que resolver

La actualización complementaria de macOS Catalina 10.15.4 está causando más problemas que resolver

Recientemente, Apple lanzó macOS Catalina 10.15.4, una actualización complementaria para solucionar problemas, pero parece que la actualización está causando más problemas que conducen al bloqueo de las máquinas Mac. Lee este artículo para obtener más información

13 Herramientas comerciales de extracción de datos de Big Data

13 Herramientas comerciales de extracción de datos de Big Data

13 Herramientas comerciales de extracción de datos de Big Data

¿Qué es un sistema de archivos de diario y cómo funciona?

¿Qué es un sistema de archivos de diario y cómo funciona?

Nuestra computadora almacena todos los datos de una manera organizada conocida como sistema de archivos de diario. Es un método eficiente que permite a la computadora buscar y mostrar archivos tan pronto como presiona buscar.