28 feb. 2011

[HOWTO] Compilar programas desde el código fuente

Una de las cosas que muchos hacemos en linux es descargar y compilar los programas por 2 posibles motivos:

  • Actualización: Una de las razones es que, por algun motivo, nuestra distribución no tiene la versión mas reciente de un programa, la cual corrige fallos importantes, incluye nuevas funciones, etc.
  • No esta en los repositorios: Otra de las razones es que no este en los repositorios de nuestra distribución, bien por que no a sido subido por el equipo de desarrollo o la comunidad, o se le considero obsoleto y por lo tanto no estará disponible en futuras versiones de esa distro (como ocurrió con mi reproductor favorito XMMS, el cual no esta disponible desde Ubuntu 8.04)
Puede haber mas razones (como que seamos uno de los desarrolladores, nos guste trastear o que la versión que hay en los repositorios no cuente con alguna función extra que esta disponible a la hora de compilarlo)

Preparación:
Lo primero que debemos de hacer es instalar una serie de programas y/o dependencias.Lo normal es contar con los compiladores del lenguaje, siendo lo mas normal contar con los de C y C++.
Para empezar instalaremos los compiladores y algunas herramientas necesarias:
sudo apt-get install make automake autoconf binutils gcc g++
Con esto tenemos lo necesario para compilar la mayoría de los programas programados en C y C++ (otros lenguajes como Python no son necesarios compilarlos y otros lenguajes como Java necesitan de tener instalado el kit de desarrollo o SDK)
Una vez descargado e instaladas lo básico pasaremos a descargarnos el código fuente del programa en cuestión y descomprimirlo en una carpeta (yo suelo hacerlo en /home/usuario/compilar para mas comodidad)

En la carpeta habrá varios archivos, entre ellos unos de texto llamados README e INSTALL que es recomendable leer. En el primero suele venir información del programa y algunos datos de interés, mientras que en el segundo lo normal es indicar los pasos necesarios para llevar a cabo la compilación (programas y librerías de desarrollo necesarias). Si en el README o INSTALL no vienen las dependencias que debemos tener instaladas en el sistema, es recomendable visitar la web del proyecto o hacer una búsqueda en nuestro buscador favorito.
Las librerías de desarrollo son aquellas que encontraremos en el gestor de paquetes terminadas en -dev (esto es en Debian/Mint/Ubuntu y derivadas, en otras distribuciones pueden llamarse de otros nombres)
Con una ventana de terminal abierta nos movemos a la carpeta donde esta el código fuente y ejecutamos
./configure -h
./configure es el script encargado de prepara lo necesario para compilar el programa, empezando por comprobar que tenemos instaladas las dependencias instaladas.
En el caso de arriba le hemos pasado el parámetro -h el cual muestra la ayuda. A veces es necesario ver las opciones que nos da ya que nos mostrara las opciones disponibles, especialmente para comprobar parámetros que nos permitan habilitar o deshabilitar funciones opcionales del programa, como puede ser el soporte para varios idiomas, el soporte para añadir extensiones, etc.
Por norma general nos bastara ejecutarlo sin ningún parámetro, si bien es recomendado pasarle uno que muestro a continuación:
./configure --prefix=/usr
Le estamos indicando a configure que nos instale todo dentro de los directorios en /usr. Esto es a veces necesario ya que algunos lo hacen por defecto en /usr/local y no es recomendable debido a que si compilamos futuras versiones del programa que si lo hagan en /usr creen algún conflicto que afecte al correcto funcionamiento del programa o de la distribución
Si no tenemos instalada alguna dependencia nos saldrá un error diciéndonos cual es para así instalarlas. Búscalas en tu gestor de paquetes e instalalas (se por experiencia que muchas veces necesitamos estar recurriendo a el varias veces a la hora de compilar por falta de información y puedes llegar a desesperarte)
Si no nos da ningún error ya podemos proceder a compilar el código. Es tan fácil como teclear:
make
Nos irán saliendo mensajes de todo tipo. En el caso de error saldrá y dirá que es lo que a fallado, si bien no pasara salvo que bien o el ./configure esta mal diseñado y no chequeo todas las dependencias, o usa librerías viejas y a la hora de compilarlo con las mas nuevas produce un fallo por que han cambiado alguna función o clase. En este ultimo caso no podemos hacer nada, salvo que sepamos c/c++ y lo podamos arreglar o bajarnos la ultima versión de desarrollo desde el repositorio que tengan los desarrolladores (ver mi entrada sobre el uso de GIT), si bien esto ultimo no es recomendable, ya que al ser el de desarrollo puede tener varios fallos que afecten al programa o al sistema).
Si todo salio bien ya podemos instalar el programa:
sudo make install
Y ya esta, ya tenemos el programa listo para ser ejecutado.
Espero que este HOWTO os haya servido de ayuda ^^

0 comentarios:

Publicar un comentario en la entrada

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Powered by Blogger