¿Hay una distribución de Linux compilada con clang / llvm?

11

¿Hay una distribución de Linux compilada con clang / llvm ? Parece que a fines de 2010 el kernel estaba funcionando. Si no, ¿sería más probable que se tratara de un problema técnico o de licencia?

rbrito
fuente
No sé de ninguno que sea. Creo que la mayoría de las distribuciones de Linux usan GCC, que admite software con licencias comunes y una creada específicamente para manejar el código GNU. Clang está siendo aceptado por la comunidad BSD por razones similares. (El procedimiento es una gran simplificación de los problemas políticos y técnicos)
Chris S
44
Para obtener más información sobre esta publicación relacionada: ¿Es posible compilar un sistema Linux completo con el compilador de Intel en lugar de GCC?
Caleb
3
@ James Por favor, no edite la respuesta en la pregunta; Puede publicar una respuesta real a continuación y marcarla como aceptada . Además, si se registra en SF, debe hacerse cargo de la pregunta aquí automáticamente
Michael Mrozek

Respuestas:

8

La situación con Debian

Como respuesta tardía a esta pregunta, lo que @jmtd dijo es exactamente lo que sucede periódicamente en el archivo de Debian.

Los paquetes se vuelven a compilar con cadenas de herramientas más nuevas (compiladores, enlazadores, etc.) y, cuando falla la compilación, los errores en los paquetes que no se pudieron compilar se archivan con la indicación de FTBFS ("error al compilar desde la fuente").

Tales errores son generalmente una indicación de que algo malo está sucediendo y, por lo general, se clasifican con gran gravedad y se les da el estado de errores de "liberación crítica", lo que significa que no se puede hacer una nueva versión con esos errores sin resolver.

En particular, Lucas Nussbaum ha estado compilando todo el archivo del Proyecto Debian en una cuadrícula como medio de alguna Evaluación de Calidad.

Recientemente, sin embargo, Sylvestre Ledru y algunos otros desarrolladores de Debian han tutelado los estudiantes en verano del Código de 2012 de Google para permitir la sustitución de ambos GCC y Sonido metálico libstdc++(biblioteca de soporte de GCC para C ++) por libc++(la contraparte de Clang / LLVM).

Hay un sitio donde se publicaron los resultados de la compilación de toda la colección de paquetes de Debian y LWN documentó más informes y el programa para desacoplar el proceso de compilación de Debian de GCC se concluyó con éxito .

Por lo tanto, pronto podremos ver una versión de Debian compilada con clang / llvm, dependiendo de cuánto soporte puedan obtener estos resultados exitosos.

El recien llegado

A partir de esta actualización (2016-08-16), hay una nueva versión de una distribución tradicional de Linux compilada con clang y llvm, OpenMandriva Lx 3.0 , ahora en su versión final. Según sus notas, se compila, tanto como sea posible, no solo con clang y llvm, sino también con niveles de optimización altos "regulares" y también con Link Time Optimization (LTO) .

LTO

Si bien el tema principal de la pregunta y de esta respuesta es llvm / clang, para ser justos, debe tenerse en cuenta que GCC también presenta LTO (más antecedentes sobre LTO ).

En teoría, LTO, como se ve en los nuevos clang / llvm y GCC, tiene el potencial de hacer no solo los binarios resultantes más rápidos, sino también tener requisitos de memoria más pequeños para la sección de texto de los programas (y el kernel de Linux es un beneficiario potencial de LTO ).

No he leído cuánto OpenMandriva Lx 3.0 usa LTO en todos los programas, pero estoy emocionado de que use clang / llvm + LTO y me encantaría ver a las personas haciendo múltiples puntos de referencia independientes que comparen y contrasten con base en GCC "regular", distribuciones no optimizadas para LTO a OpenMandriva Lx 3.0.

rbrito
fuente
@AleksandrDubinsky, gracias por agradecerme, pero solo estoy haciendo lo que me gustaría tener en SE en general. Es frustrante encontrar una pregunta / respuesta que huele a polvo puro (siempre que el problema no sea transitorio, por supuesto).
rbrito
5

Aún no. De acuerdo con este informe de error actualmente abierto , parece que incluso el núcleo no puede compilarse.

Cristian Măgherușan-Stanciu
fuente
El informe de error contiene una entrada al final que vincula al proyecto Linux LLVM por Bryce Lelback. Bryce es la misma persona que inició el hilo de discusión de octubre de 2010. Clang construye un kernel de Linux que funciona (Boots to RL5 con SMP, redes y X, autohospedadores) . Vigilaré el proyecto lll.
@James Un recordatorio más desde que mencionaste aceptar: si te registras en SF con el mismo OpenID que usaste aquí, deberías poder aceptar una respuesta aquí
Michael Mrozek
2

Si bien los archivos binarios del usuario final no están construidos con clang / llvm, la mayoría del archivo de Debian ha sido construido (y reconstruido) con clang / llvm (y binutils-gold y otras partes y piezas) por personas que desean exponer errores de portabilidad en el paquete de software (y los compiladores mismos).

jmtd
fuente
¿No son los binarios del usuario final parte del archivo de Debian?
tshepang
1
Sí, y esos están construidos con gcc. Aparte de los archivos binarios del usuario final, los paquetes fuente se reconstruyen como parte de múltiples procesos de integración continua, algunos de los cuales utilizan cadenas de herramientas alternativas de compilación / enlazador / libc.
jmtd