Instalación de llvm y clang en ubuntu

16

Así que estoy tratando de instalar Halide en mi Ubuntu 12.04 (64 bits). Necesito llvm-3.2 y clang para ser instalado.

La ejecución sudo apt-get install llvm-3.2termina con 'paquete no encontrado'.

Probar sudo apt-get install llvmo sudo apt-get install clanginstala versiones 2.9. Google me ayudó con esto

sudo add-apt-repository ppa:kxstudio-team/builds
sudo apt-get update

Ahora sudo apt-get install llvm-3.2 clang-3.2funciona. Pero cuando ejecuto make en la carpeta Halide, sigo recibiendo clang: Comando no encontrado.

Andrei Ivanov
fuente
2
Supongo que "clag: Comando no encontrado" debería leer "clang: Comando no encontrado"?
andyg0808
sí, lo siento
¿Estás usando un Ubuntu con una GUI o uno con solo una línea de comandos?
andyg0808
Además, ¿necesitas clang 3.2 o solo clang 3+?
andyg0808
Descargué la versión de escritorio. De hecho, necesito llvm 3.2, no se sabe nada sobre la versión de clang.

Respuestas:

9

Ok, así que he realizado con éxito Halide en Ubuntu 13.04 instalando llvm, clangy build-essential. Mi única suposición sobre su problema es que el LLVM o el sonido del PPA que instaló podría no haber funcionado del todo bien. Parece que en realidad es posible obtener LLVM 3.2 de Ubuntu para 12.04, a través de lo que se conoce como el archivo "propuesto". Puede intentar purgar el LLVM que tiene e instalarlo desde "propuesto". Explicaré cómo hacer eso a continuación. Como mencionó que es nuevo en Ubuntu (en la versión original de la pregunta), primero explicaré lo que hace cada comando que ya ha utilizado, lo mejor que puedo.

Entonces, sudo apt-get install llvm-3.2intenta instalar el paquete nombrado llvm-3.2desde los repositorios actuales habilitados en su sistema. En su caso, no se pudo encontrar, por lo que el comando falló. sudo apt-get install llvminstaló el llvmpaquete, que probablemente sea un paquete especial que solo utiliza el LLVM más actualizado disponible en sus repositorios estándar. En su caso, eso fue 2.9. La misma idea se aplica a sudo apt-get install clang. sudo add-apt-repository ppa:kxstudio-team/builds agrega lo que se llama un archivo de paquete personal o PPA a su sistema. Esto le permite obtener más software de otro repositorio o fuente de software. Consulte https://help.launchpad.net/Packaging/PPA para obtener más información. Finalmente,sudo apt-get updatele dice a Ubuntu que obtenga información sobre qué paquetes están disponibles en los repositorios disponibles actualmente. Puede echar un vistazo a http://www.debian.org/doc/manuals/debian-faq/ch-pkgtools.en.html para obtener más información sobre la gestión de paquetes en Debian (la mayoría de los cuales deberían aplicarse también a Ubuntu, ya que Ubuntu está basado en Debian).

Entonces, los pasos para eliminar los paquetes que tiene e instalar las versiones disponibles de precisa-propuesta:

  1. Úselo sudo apt-get purge llvm-3.2 clang-3.2para eliminar completamente LLVM y clang de su sistema.
  2. (Opcional) Utilícelo sudo add-apt-repository --remove ppa:kxstudio-team/buildspara eliminar el PPA de su sistema.
  3. Siga las instrucciones en https://wiki.ubuntu.com/Testing/EnableProposed para habilitar el archivo propuesto (justo en la parte superior de la página), y también siga las instrucciones para "Actualización selectiva desde -propuesta". La primera parte habilitará la versión real del llvm-3.2paquete de Ubuntu , y la segunda evitará que el sistema intente actualizar todo a las versiones propuestas.
  4. Use sudo apt-get updatepara obtener información sobre qué paquetes y versiones están disponibles ahora.
  5. Úselo sudo apt-get install llvm-3.2/precise-proposedpara instalar LLVM 3.2 y utilícelo sudo apt-get install clang/precise-proposedpara instalar Clang 3.0 (creo que esa es la versión que debería obtener).
  6. NUEVO PASO: Haga sudo ln -s /usr/bin/llvm-config-3.2 /usr/local/bin/llvm-configque el sistema trate llvm-config-3.2(que es el llvm-configque viene con llvm-3.2) como llvm-config. Más completamente, esto crea un enlace simbólico (o enlace simbólico) a llvm-config-3.2 en otro lugar donde Ubuntu buscará programas (más información: ln , FHS , PATH ). Por lo tanto, cuando ejecuta "llvm-config", Ubuntu encontrará el enlace simbólico y ejecutará el programa al que apunta ( llvm-config-3.2).
  7. Vea si todo se compila correctamente ahora.

Ojalá eso funcione. No he probado nada de esto, así que úselo bajo su propio riesgo, etc. Sin embargo, estoy bastante seguro de que no debería hacer nada terrible.

EDITAR: Tenga en cuenta que llvmy llvm-3.2son independientes. llvmdepende de llvm-2.9( ver aquí ), mientras que llvm-3.2es independiente ( ver dependencias aquí )

Además, no estoy seguro de saber si se completa la pestaña ; puede ser útil si está buscando un comando pero no conoce el nombre (por ejemplo, en este caso, probablemente habría demostrado que llvm-configse llamó llvm-config-3.2).

andyg0808
fuente
¡Muchas gracias! Casi funcionó. El único problema es que el llvm-3.2 instalado no tiene llvm-config. Entonces, cuando ejecuto make en Halide, me dice que no está instalado llvm. Ejecuté instalar llvm y ahora llvm-config --version dice 2.9. Si intento instalar llvm-3.2, me dice que es la última versión. Parece que llvm-3.2 y llvm son completamente independientes.
Vea el nuevo paso en la respuesta; probablemente desee desinstalar el llvmpaquete ( sudo apt-get purge llvm) antes de hacerlo para asegurarse de obtener la versión correcta. Siempre puede verificar qué archivo está intentando ejecutar mediante el comando which [command]. Por ejemplo, which llvm-configdebería leer /usr/local/bin/llvm-config. Ver en.wikipedia.org/wiki/Which_%28Unix%29 para más información.
andyg0808
¿por qué llvm-config no está vinculado a llvm-config-3.2 como lo es para gcc? ¿Es esta una elección consciente?
Janus Troelsen
@JanusTroelsen Creo que es una elección consciente. Puesto que la versión de LLVM que estaba disponible desde el llvmpaquete para Ubuntu 12.04 era llvm-2.9, el llvm-configcomando se ha vinculado a la llvm-configde la misma versión, es decir, llvm-config-2.9. En Ubuntu 13.04 y 13.10, el llvmpaquete instala LLVM 3.2, y esperaría que luego se configurara llvm-config-3.2como llvm-configlo hace en Ubuntu 13.10.
andyg0808