Compilar programas

De doc.ubuntu-es
(Diferencias entre revisiones)
Saltar a: navegación, buscar
(categorizo)
(Segundo Paso: Descomprimir el archivo con las fuentes del programa)
 
(No se muestran 13 ediciones intermedias realizadas por 3 usuarios)
Línea 37: Línea 37:
  
 
Por lo que instalamos las librerías y paquetes que necesitaremos para poder generar archivos binarios.
 
Por lo que instalamos las librerías y paquetes que necesitaremos para poder generar archivos binarios.
 +
 +
  
 
== Segundo Paso: Descomprimir el archivo con las fuentes del programa ==
 
== Segundo Paso: Descomprimir el archivo con las fuentes del programa ==
  
En este punto presumimos que tendremos el archivo comprimido descargado en el escritorio. Normalmente los códigos fuente vienen comprimidos en un fichero '''.tar.gz'''. Para descomprimirlos podemos hacerlo con el [[Gestor de archivadores]] de Ubuntu o abrir un terminal y hacerlo desde ahí:
+
En este punto presumimos que tendremos el archivo comprimido descargado en el escritorio. Normalmente los códigos fuente vienen comprimidos en un fichero [[Formatos_de_paquetes#Tarballs|.tar.gz]]. Para descomprimirlos podemos hacerlo con el [[Gestor de archivadores]] de Ubuntu o abrir un terminal y hacerlo desde ahí:
  
 
  cd Desktop                          (vamos a la carpeta de nuestro escritorio)
 
  cd Desktop                          (vamos a la carpeta de nuestro escritorio)
  tar xzf nombre_de_archivo            (descomprimimos el archivo)
+
  tar -xzf nombre_de_archivo            (descomprimimos el archivo)
  
Con lo que quedarían todos los archivos de las fuentes en otra carpeta. Es '''muy recomendable''' (sino obligatorio) que nos leamos el archivo '''README''', ya que como hemos comentado más arriba, aunque el proceso de compilación de un programa es muy similar entre los distintos programas, en este archivo figura el proceso de compilación específico para el programa.
+
Con lo que quedarían todos los archivos de las fuentes en otra carpeta.  
 +
 
 +
 
 +
{{nota|Es '''muy recomendable''' (si no obligatorio) que nos leamos el archivo de ayuda de instalación, que puede llamarse '''README''' o '''INSTALL''', ya que como hemos comentado más arriba, aunque el proceso de compilación de un programa es muy similar entre los distintos programas, en este archivo figura el proceso de compilación específico para el programa.}}
 +
 
 +
 
 +
{{Importante|'''No todos los archivos .tar.gz2 o tarballs son archivos de fuentes para compilar''', sino que puede ser que descarguemos un tarball y que contenga ya el programa que queremos ejecutable (archivos .sh, .run. .bin, etc.). Para saber si debemos compilar tendremos que revisar el archivo README y en caso de que éste no dé instrucciones de compilación ya podemos sospechar que no hay que compilar. Si aún así no estamos seguros podemos verificar que dentro haya un fichero ejecutable llamado '''configure'''. Si no existe ya no hay duda que no hay que compilar.}}
  
 
== Tercer Paso: Configuración para la compilación ==
 
== Tercer Paso: Configuración para la compilación ==
  
Entraremos en la carpeta donde hayamos descomprimido el archivo ''.tar.gz'' y teclearemos:
+
Entraremos en la carpeta donde hayamos descomprimido el archivo ''.tar.gz'' . Podemos ayudarnos a buscar las dependencias del programa a instalar tecleando desde la terminal el siguiente comando:
  
  sudo ./configure
+
  sudo apt-get build-dep ''nombre_del_programa''
  
 +
Donde sustituiremos ''nombre_del_programa'' por el nombre del programa que estemos instalando. Con esto haremos que el comando [[Apt|apt-get]] nos busque automáticamente las dependencias y nos pregunte si las queremos instalar.
  
lo que generará la configuración para nuestro pc y le dirá a [[gcc|GCC]] cómo debe compilar las fuentes para que funcionen en nuestra máquina.
+
Seguidamente, ejecutaremos el fichero ejecutable ''configure'' que viene dentro de la carpeta nuestro programa a compilar. Bastará con teclear la siguiente orden desde la consola de comandos:
  
 +
./configure
  
{{nota|Si obtenemos errores en este paso seguramente sea porque nos faltará un paquete (cuanto más raro el programa, más raras son las dependencias y paquetes que necesita). Para solucionarlo, sólo tendremos que instalarlo (mediante [[Synaptic]] o con [[Apt]]) antes de volver a intentarlo. Si aún así nos sigue mostrando el mismo error, tendremos que instalar el mismo paquete, pero la versión con “-dev” en el nombre del paquete (versión para desarrollo).}}
+
o
 +
 
 +
./configure --prefix=/usr
 +
 
 +
::* '''./''' se emplea para ejecutar un archivo ejecutable que se halla en la misma carpeta donde nos encontramos en ese momento.
 +
::* '''configure''' es el fichero ejecutable que invocaremos
 +
::* '''--prefix=/usr''' es un parámetro que garantiza que el programa se instale en la carpeta /usr (en caso de no ponerlo, el programa se instalaría en /usr/local), con lo que nos aseguramos que el programa se instale ahi.
 +
 
 +
 
 +
 
 +
{{Nota|El uso del parámetro '''<nowiki>--prefix=/usr</nowiki>''' es estrictamente '''opcional''', ya que no es indispensable. A pesar de ello, algunos programas (pocos, pero por poner un ejemplo: [http://guichan.sourceforge.net/wiki/index.php/Main_Page Guichan], una librería empleada para juegos) pueden no funcionar correctamente si no son instalados en la carpeta /usr.
 +
 
 +
Básicamente, ''/usr'' y ''/usr/local'' son empleados para mantener separados los archivos propios de la distribución (/usr) de los instalados por el usuario (/usr/local). A efectos de invocación/llamada del programa será lo mismo, ya que ambas rutas están en el PATH (que quiere decir que al ejecutarlas, Ubuntu las va a encontrar sin problemas). El único riesgo de instalar en /usr en lugar de en /usr/local es que se sobreescriba alguna librería (o programa) instalada por la distribución con una del programa que estemos compilando, por lo que la estabilidad de nuestro sistema se podría ver comprometida.}}
 +
 
 +
 
 +
El fichero '''configure''' genera la configuración idónea para nuestro PC y le dice a [[gcc|GCC]] cómo debe compilar las fuentes para que funcionen en nuestra máquina.
 +
 
 +
 
 +
{{Importante|Si obtenemos errores en este paso seguramente sea porque nos faltará un paquete (cuanto más raro el programa, más raras son las dependencias y paquetes que necesita). Para solucionarlo, sólo tendremos que instalarlo (mediante [[Synaptic]] o con [[Apt]]) antes de volver a intentarlo. Si aún así nos sigue mostrando el mismo error, tendremos que instalar el mismo paquete, pero la versión con “-dev” en el nombre del paquete (versión para desarrollo).}}
 +
 
 +
 
 +
{{Nota|También viene muy bien ejecutar antes y desde la terminal el comando:
 +
 
 +
<nowiki>./configure --help</nowiki>
 +
 
 +
Este comando sirve para saber si tenemos que añadir más opciones cuando ejecutamos '''<nowiki>./configure</nowiki>''' y en caso afirmativo, nos informa de qué opciones son.}}
  
 
== Cuarto Paso: Generar el paquete binario ==
 
== Cuarto Paso: Generar el paquete binario ==
Línea 63: Línea 98:
 
Para generar el paquete binario tendremos que usar el comando '''make''':
 
Para generar el paquete binario tendremos que usar el comando '''make''':
  
  sudo make
+
  make
 +
 
  
  
Línea 71: Línea 107:
  
 
  sudo make install
 
  sudo make install
 +
 +
Si todo ha ido bien podremos ir a buscar el programa recién instalado en nuestro Ubuntu y ejecutarlo. Si por alguna de aquellas queremos desinstalar el programa que acabamos de compilar, lo podremos hacer siempre y cuando no hayamos borrado el directorio en el que hemos hecho la instalación. Bastará hacerlo con la instrucción:
 +
 +
sudo make uninstall
 +
  
  
Línea 76: Línea 117:
  
 
Borraremos la carpeta, puesto que a estas alturas ya tenemos el programa instalado y ya no necesitaremos nada de esa carpeta. De este modo contribuimos a mantener limpio nuestro sistema.
 
Borraremos la carpeta, puesto que a estas alturas ya tenemos el programa instalado y ya no necesitaremos nada de esa carpeta. De este modo contribuimos a mantener limpio nuestro sistema.
 +
  
  
Línea 82: Línea 124:
 
* [[Compilar el kernel]]
 
* [[Compilar el kernel]]
 
* [[Crear paquetes .deb]]
 
* [[Crear paquetes .deb]]
 +
* [[:categoría:compiladores|compiladores]]
  
 
[[Categoría:Programación]]
 
[[Categoría:Programación]]

Última revisión de 10:50 31 ene 2010

Compilar un programa para instalarlo en Ubuntu es una tarea para usuarios con un poco de experiencia, dado que cada programa tiene sus particularidades. Si tenemos la opción de instalar un paquete binario (.deb), es mejor optar por usarlo.

Casos en que optaremos por compilar desde las fuentes:


  • Cuando no encontremos el programa en nuestros repositorios (Synaptic) o no encontremos la versión que queremos.
  • Cuando no haya paquetes binarios en internet. Una buena web para hallar paquetes binarios es: GetDeb.
  • Cuando queramos optimizar el programa al máximo, ya que lo compilamos para nuestra máquina.


En este artículo daremos una visión general de cómo compilar en Ubuntu y sus derivados por medio de una fórmula básica consistente en 6 pasos.


Contenido

[editar] Primer Paso: Instalar el paquete build-essential

Podemos encontrar el paquete build-essential por medio del Gestor de Paquetes Synaptic con el siguiente comando desde terminal:

sudo aptitude install build-essential


Build-essential es en realidad un metapaquete, o lo que es lo mismo: un paquete que contiene otros paquetes:


  • g++
  • g++-3.3
  • gcc
  • gcc-3.3
  • libstdc++5-3.3-dev


Por lo que instalamos las librerías y paquetes que necesitaremos para poder generar archivos binarios.


[editar] Segundo Paso: Descomprimir el archivo con las fuentes del programa

En este punto presumimos que tendremos el archivo comprimido descargado en el escritorio. Normalmente los códigos fuente vienen comprimidos en un fichero .tar.gz. Para descomprimirlos podemos hacerlo con el Gestor de archivadores de Ubuntu o abrir un terminal y hacerlo desde ahí:

cd Desktop                           (vamos a la carpeta de nuestro escritorio)
tar -xzf nombre_de_archivo            (descomprimimos el archivo)

Con lo que quedarían todos los archivos de las fuentes en otra carpeta.


Clip.png Es muy recomendable (si no obligatorio) que nos leamos el archivo de ayuda de instalación, que puede llamarse README o INSTALL, ya que como hemos comentado más arriba, aunque el proceso de compilación de un programa es muy similar entre los distintos programas, en este archivo figura el proceso de compilación específico para el programa.


Important.png No todos los archivos .tar.gz2 o tarballs son archivos de fuentes para compilar, sino que puede ser que descarguemos un tarball y que contenga ya el programa que queremos ejecutable (archivos .sh, .run. .bin, etc.). Para saber si debemos compilar tendremos que revisar el archivo README y en caso de que éste no dé instrucciones de compilación ya podemos sospechar que no hay que compilar. Si aún así no estamos seguros podemos verificar que dentro haya un fichero ejecutable llamado configure. Si no existe ya no hay duda que no hay que compilar.

[editar] Tercer Paso: Configuración para la compilación

Entraremos en la carpeta donde hayamos descomprimido el archivo .tar.gz . Podemos ayudarnos a buscar las dependencias del programa a instalar tecleando desde la terminal el siguiente comando:

sudo apt-get build-dep nombre_del_programa

Donde sustituiremos nombre_del_programa por el nombre del programa que estemos instalando. Con esto haremos que el comando apt-get nos busque automáticamente las dependencias y nos pregunte si las queremos instalar.

Seguidamente, ejecutaremos el fichero ejecutable configure que viene dentro de la carpeta nuestro programa a compilar. Bastará con teclear la siguiente orden desde la consola de comandos:

./configure

o

./configure --prefix=/usr
  • ./ se emplea para ejecutar un archivo ejecutable que se halla en la misma carpeta donde nos encontramos en ese momento.
  • configure es el fichero ejecutable que invocaremos
  • --prefix=/usr es un parámetro que garantiza que el programa se instale en la carpeta /usr (en caso de no ponerlo, el programa se instalaría en /usr/local), con lo que nos aseguramos que el programa se instale ahi.


Clip.png El uso del parámetro --prefix=/usr es estrictamente opcional, ya que no es indispensable. A pesar de ello, algunos programas (pocos, pero por poner un ejemplo: Guichan, una librería empleada para juegos) pueden no funcionar correctamente si no son instalados en la carpeta /usr.

Básicamente, /usr y /usr/local son empleados para mantener separados los archivos propios de la distribución (/usr) de los instalados por el usuario (/usr/local). A efectos de invocación/llamada del programa será lo mismo, ya que ambas rutas están en el PATH (que quiere decir que al ejecutarlas, Ubuntu las va a encontrar sin problemas). El único riesgo de instalar en /usr en lugar de en /usr/local es que se sobreescriba alguna librería (o programa) instalada por la distribución con una del programa que estemos compilando, por lo que la estabilidad de nuestro sistema se podría ver comprometida.


El fichero configure genera la configuración idónea para nuestro PC y le dice a GCC cómo debe compilar las fuentes para que funcionen en nuestra máquina.


Important.png Si obtenemos errores en este paso seguramente sea porque nos faltará un paquete (cuanto más raro el programa, más raras son las dependencias y paquetes que necesita). Para solucionarlo, sólo tendremos que instalarlo (mediante Synaptic o con Apt) antes de volver a intentarlo. Si aún así nos sigue mostrando el mismo error, tendremos que instalar el mismo paquete, pero la versión con “-dev” en el nombre del paquete (versión para desarrollo).


Clip.png También viene muy bien ejecutar antes y desde la terminal el comando:
./configure --help

Este comando sirve para saber si tenemos que añadir más opciones cuando ejecutamos ./configure y en caso afirmativo, nos informa de qué opciones son.

[editar] Cuarto Paso: Generar el paquete binario

Para generar el paquete binario tendremos que usar el comando make:

make


[editar] Quinto Paso: Instalar el paquete binario

A estas alturas ya tenemos el paquete binario creado. Para instalarlo usaremos el comando make install:

sudo make install

Si todo ha ido bien podremos ir a buscar el programa recién instalado en nuestro Ubuntu y ejecutarlo. Si por alguna de aquellas queremos desinstalar el programa que acabamos de compilar, lo podremos hacer siempre y cuando no hayamos borrado el directorio en el que hemos hecho la instalación. Bastará hacerlo con la instrucción:

sudo make uninstall


[editar] Sexto Paso: Borrar la Carpeta

Borraremos la carpeta, puesto que a estas alturas ya tenemos el programa instalado y ya no necesitaremos nada de esa carpeta. De este modo contribuimos a mantener limpio nuestro sistema.


[editar] Ver también

Herramientas personales