470 palabras
2 minutos
Compilaci贸n de un programa en C utilizando un Makefile

Enunciado: Elige el programa escrito en C que prefieras y comprueba en las fuentes que exista un fichero Makefile o Configure. Deber谩s compilar desde las fuentes. Realiza los pasos necesarios para compilarlo e inst谩lalo en tu equipo en un directorio que no interfiera con tu sistema de paquetes (/opt, /usr/local, etc.) La correcci贸n se har谩 en clase y deber谩s ser capaz de explicar qu茅 son todos los ficheros que se hayan instalado y realizar una desinstalaci贸n limpia.

El programa elegido es htop, ya que est谩 escrito en C. De momento no tiene ninguno de los ficheros requeridos, pero ejecutando el script autogen.sh se crea el fichero configure.

Instalaci贸n#

Para obtener las fuentes ejecutamos el siguiente comando:

apt source htop

wget http://deb.debian.org/debian/pool/main/h/htop/htop_3.0.5.orig.tar.gz
tar -xvf htop_3.0.5.orig.tar.gz

Configure#

De momento el fichero no existe. Ejecutamos autogen.sh. Necesitaremos adem谩s el paquete autoconf:

sudo apt install autoconf
./autogen.sh

ejecucion script autogen Podemos comprobar que se ha generado el fichero configure: ls del directorio de htop Podemos ejecutar el fichero configure directamente. Sin embargo, de cara a una desinstalaci贸n m谩s sencilla y a poder tener m谩s localizados los ficheros instalados, vamos a cambiar la ruta que hay por defecto, al directorio opt. Se hace a帽adiendo la siguiente opci贸n:

sudo mkdir /opt/htop
./configure --prefix=/opt/htop/

salida de la ejecuci贸n de configure

En el caso de que se de alg煤n error en la salida del comando, hay que instalar las dependencias indicadas, y repetir el paso anterior.

sudo apt install libncurses*

Makefile#

Para poder ejecutar make necesitamos el paquete build-essential, que contiene las utilidades esenciales para compilar un paquete en Debian.

sudo apt install build-essential

Para instalar el paquete ejecutamos:

sudo make install
sudo make clean

Para generar el fichero .deb es necesario que el paquete descargado sea con apt source, o la versi贸n espec铆fica de debian.

o bien, para generar el fichero .deb:

instalamos las siguientes dependencias:

sudo apt install libnl-3-dev libnl-genl-3-dev libsensors-dev pkg-config debhelper-compat
# o bien con apt-get build-dep
sudo apt-get build-dep htop
make
dpkg-buildpackage -b
make clean
sudo dpkg -i ../htop_3.0.5-7_amd64.deb

ejecucion de comando make El paquete ya est谩 instalado. Podemos comprobar los ficheros creados en /opt: tree del directorio htop Entre los ficheros que aparecen, los m谩s importantes son el propio binario de htop, y el manual. Para poder utilizar el comando la terminal tenemos que a帽adirlo al PATH. Para hacerlo, a帽adimos la siguiente l铆nea al fichero .bashrc:

export PATH="/opt/htop/bin:$PATH"

Manual#

Ya que lo hemos instalado en un directorio personal, no se ha creado el manual. Para hacerlo tenemos que crear un enlace simb贸lico:

sudo mkdir /usr/local/man/man1
sudo ln -s /opt/htop/share/man/man1/* /usr/local/man/man1/

Desinstalaci贸n#

Para desinstalar el paquete vamos a utilizar otra vez el comando make, esta vez con la opci贸n uninstall:

sudo make uninstall

ejecucion de make uninstall Tras eso, comprobamos si queda algo en la ubicaci贸n de la instalaci贸n: estructura residual la estructura de carpetas no se ha borrado, la borramos de manera manual. Por 煤ltimo, hay que eliminar la l铆nea de .bashrc que a帽ade la ruta al PATH y eliminar el enlace simb贸lico:

sudo rm /usr/local/man/man1/htop.1 
Compilaci贸n de un programa en C utilizando un Makefile
https://www.robertops.com/posts/2022-10-16_compilacion_makefile/
Autor
Roberto Rodr铆guez
Publicado el
2022-10-16