Compilar o no compilar en Linux

Los que intentaron mudarse al mundo de Linux años antes, tuvieron, inevitablemente, el placer de compilar mas de una vez algun programa que quisieramos/necesitaramos.
Con el tiempo la gente se canso de no tener dependencias y no poder escuchar musica, o peor, no tener conexion a internet, nada mas porque faltaba algun paquete misterioso, asi que todo empezo a distribuirse en forma de binarios y sistema de paquetes (deb, rpm, etc).
Despues se empezo a acietar un poco mas, y vinieron los apt y los yum, que hicieron la distribucion de aplicaciones todavia mas sencilla.
Ahora, ¿para que querriamos compilar una aplicacion hoy en dia?
Bien, repasemos un poco. Cuando bajamos binarios, tenemos que especificar que tipo de binario queremos bajar. Asumamos que nos movemos con PCs comunes, Intel o AMD, nada de Apple o Sun.
La opcion suele ser “386″, que es un binario compilado para ser compatible con los procesadores Intel 386 para arriba, asi que se imaginaran que no es lo mas “optimo” sobre un Intel Pentium 4 o un AMD Sempron.
Eso nos lleva al siguiente nivel, que son binarios optimizados para Intel (686) o AMD (K7). Ya con tener binarios compilados para esas plataformas optimizamos el funcionamiento del mismo, pero no todos los programas distribuyen sus binarios compilados para todas las plataformas debido al tiempo que lleva compilarlo para cada release.
Al compilar en nuestra PC, siempre se genera un binario para nuestro procesador, con lo cual esa seria una de las ventajas.
Despues tenemos otra ventaja significativa, que es todo lo que podemos setear para incluir o excluir en el binario, pudiendo asi remover mucha basura que vendria en un binario, o agregar opciones que nos serian utiles o indispensables

Las ventajas reales comprobadas de compilar tus propios binarios realmente son muy pocas en cuanto al tiempo de ejecucion y respuesta para cualquier escritorio linux promedio, sobre todo considerando la cantidad de tiempo que lleva compilar un binario de tamaño considerable (pueden ser horas para el Firefox, por ej.).
Yo creo que hoy en dia solo se justifica hacer este tipo de trabajo fino para servidores, que van a estar con mucha carga encima, donde milisegundos realmente hacen la diferencia.

También te puede interesar:

8 Cosas to “Compilar o no compilar en Linux”

  1. March 16th, 2006 | 1:35 pm

    Compilar o no sobre Linux

    Una detallada descripcion de porque compilar o no sobre Linux con datos interesantes.

  2. March 16th, 2006 | 1:55 pm

    Bueno… no creo que compilarlo todo sea solo para servidores.

    En mi caso tengo un notebook P-III a 700MHz (thinkpad X21) con Gentoo y tengo casi todo compilado (stage3). Es cierto que quizás no se note “a grandes rasgos” la velocidad de los binarios.

    Sin embargo emplear las directrices USE para engordar ó adelgazar dichos binarios puede ser definitivo para el rendimiento en máquinas pequeñas. Por ejemplo puedo querer soporte para jpeg y png y no para bmp y tiff, ó soporte para flac y no mp3 ni ogg, “adelgazando” así los binarios.

    Dices que no “no está justificado”, sin embargo prueba a hacerle un ldd a algún binario en Debian, RedHat, SuSE etc etc, y prueba lo mismo en una Gentoo compilada desde 0 y con una buena configuración USE.

    Te sorprenderías de lo importante que es la optimización, sea por velocidad ó por el tamaño de los ejecutables :-)

  3. Julian
    March 16th, 2006 | 3:34 pm

    No puedo estar mas de acuerdo con alucardX. De hecho es totalmente falsa la premisa de que la ganancia solo se vé en servidores. De hecho, una de las mejoras comprobadas de las optimizaciones son para equipos orientados a aplicaciones de escritorio pero con procesadores de capacidad reducida, en los cuales la optimización y la eliminación del soporte para extensiones que no se utilizan (como lo indica alucardX) marcan la diferencia entre un sistema usable o no.
    \n
    Prueben Gentoo :-)

  4. March 16th, 2006 | 4:22 pm

    Los fans de Redhat (siempre he usado RH hasta hace un año que probé Gentoo) insisten en que la recompilación no beneficia tanto y que en algunos casos específicos puede ser hasta perjudicial. Sin embargo, lo que sí no tiene precio y vale cada minuto invertido en recompilar es la posibilidad, como bien apunta AlucardX, de tener un binario sin dependencias innecesarias, justo a la medida de tu sistema.

  5. kA
    March 16th, 2006 | 4:54 pm

    yo probaría gentoo
    pero…………….no tengo tanto tiempo libre :P

  6. rod
    March 16th, 2006 | 11:37 pm

    despues de compilar glibc y gtk+ en una p2 400 me incline porque no cambia tanto la cosa.

  7. March 17th, 2006 | 2:23 pm

    para otra cosa que va muy bien el compilar es para el aburrimiento :D

  8. el RicharD
    March 17th, 2006 | 3:37 pm

    Gentoo apesta, no voy a estar ocho horas emergeando, bajando y viendo como mi PC derrite la red eléctrica de mi barrio.

    Uso Slack, que trae todo para i386. Anda bien, en equipos viejos sobre todo, y si necesito más potencia, me hago un kernel, y ya. El kernel hace la diferencia, el resto de los programas, no tanto…

Dejar una respuesta