¿Es posible compilar un sistema Linux completo con el compilador de Intel en lugar de GCC?


26

Tal vez hay algunos problemas de compatibilidad?

Tengo la impresión de que para los sistemas basados ​​en Intel, el compilador de Intel podría hacer un mejor trabajo que GCC. ¿Quizás ya hay una distribución que ha intentado esto?

Creo que esto podría ser bastante sencillo con Gentoo.


44
¡Alguna buena información aquí, que debería haber encontrado antes! gentoo-wiki.info/HOWTO_ICC_and_Portage
barrymac

55
Tengo que preguntarme sobre su premisa: ¿cómo calcula qué compilador hace "un mejor trabajo"? ¿Ejecución de código más rápida? Binarios más pequeños? ¿Tiempo de compilación más rápido?
Eli Heady

1
Lo calibraría primero en un código más rápido, binarios más pequeños en segundo lugar, pero realmente no me importaría mucho el tamaño binario a menos que fuera bastante dramático. Quizás otra preocupación podría ser la eficiencia energética
barrymac

Respuestas:


29

No podrás compilar todo con icc. Muchos programas utilizan extensiones GCC para el lenguaje C. Sin embargo, Intel ha hecho un gran esfuerzo para admitir la mayoría de estas extensiones; por ejemplo, las versiones recientes de icc pueden compilar el kernel de Linux.

Gentoo es de hecho su mejor apuesta si le gusta recompilar su software de una manera inusual. La página de icc en el wiki de Gentoo describe los principales obstáculos.

Primero haga una instalación básica de Gentoo, y emerge icc. No elimine icc más adelante siempre que tenga algún binario compilado con icc en su sistema. Tenga en cuenta que icc está instalado en /opt; si eso no está en su partición raíz, deberá copiar las bibliotecas icc a su partición raíz si alguno de los programas utilizados en el arranque se compila con icc.

Configure /etc/portage/bashrcy declare sus opciones de compilación favoritas; vea el wiki de Gentoo para obtener un script más completo que admita la creación de diferentes paquetes con diferentes compiladores (esto es necesario porque icc rompe algunos paquetes).

export OCC="icc" CFLAGS="-O2 -gcc"
export OCXX="icpc" CXXFLAGS="$CFLAGS"
export CC_FOR_BUILD="${OCC}"

13

Sin duda sería una experiencia interesante. Sin embargo, recompilar una distribución completa de Linux usando un compilador alternativo no sería realmente sencillo. Muchos paquetes esenciales dependen de GCC y otras utilidades de cadena de herramientas GNU.

Sería factible utilizar un compilador alternativo para aquellos paquetes que no requieren que GCC cree un híbrido. Puede ser posible reemplazar los paquetes dependientes de GCC con otros que se construirían con su compilador, pero en la mayoría de los casos no hay demasiadas alternativas. Donde los haya, deberá determinar si esas alternativas serán tan funcionales para su uso previsto.

Sin embargo, la verdadera pregunta es: ¿valdría la pena? Si está intentando construir un sistema embebido, un compilador alternativo puede producir binarios más pequeños. Si está creando un clúster de cómputo, puede obtener una ejecución de código más rápida. Si está creando un escritorio, obtendrá una excelente experiencia de aprendizaje.

Creo que al final (suponiendo que esté construyendo un escritorio) encontrará que es cierto lo que muchos usuarios de la distribución de fuentes finalmente deciden: la cantidad de tiempo dedicado a la optimización y construcción y reconstrucción supera con creces el tiempo ahorrado por una ejecución de código más rápida. Eso no quiere decir que no deba hacerse, podría ser bastante divertido. Si lo hace, este sitio sería un gran lugar para encontrar respuestas y documentar sus esfuerzos.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.