206.1 - Comandos clave: Compilar e instalar desde fuentes

Proceso de compilacion

ComandoDescripcionEjemplo
./configureDetecta el sistema y genera el Makefile./configure --prefix=/usr/local
./configure --helpMuestra todas las opciones disponibles./configure --help | less
./configure --prefix=DIRDefine directorio base de instalacion./configure --prefix=/opt/app
./configure --with-PKGHabilita soporte para un paquete./configure --with-ssl=/usr/lib/ssl
./configure --without-PKGDeshabilita soporte para un paquete./configure --without-readline
./configure --enable-FEATActiva una caracteristica./configure --enable-shared
./configure --disable-FEATDesactiva una caracteristica./configure --disable-ipv6
makeCompila el software segun el Makefilemake
make -j NCompila en paralelo con N procesosmake -j$(nproc)
make installInstala el software compiladosudo make install
make cleanElimina archivos objeto compiladosmake clean
make distcleanLimpieza completa (incluye archivos de configure)make distclean
make uninstallDesinstala (si el Makefile lo soporta)sudo make uninstall
make check / make testEjecuta las pruebas del proyectomake check

Autotools

ComandoDescripcionEjemplo
autoconfGenera configure desde configure.acautoconf
automakeGenera Makefile.in desde Makefile.amautomake --add-missing
aclocalGenera macros m4 para autoconfaclocal
autoreconf -iRegenera todos los archivos autotoolsautoreconf -i

CMake

ComandoDescripcionEjemplo
cmake ..Genera Makefiles desde CMakeLists.txtmkdir build && cd build && cmake ..
cmake -DCMAKE_INSTALL_PREFIX=DIRDefine directorio de instalacioncmake -DCMAKE_INSTALL_PREFIX=/usr ..
cmake -DCMAKE_BUILD_TYPE=TYPETipo de compilacion (Release/Debug)cmake -DCMAKE_BUILD_TYPE=Release ..
cmake -LH ..Lista opciones configurables del proyectocmake -LH ..

Gestion de bibliotecas compartidas

ComandoDescripcionEjemplo
ldconfigActualiza cache del enlazador dinamicosudo ldconfig
ldconfig -pMuestra la cache de bibliotecas actualldconfig -p | grep libssl
ldd BINARIOMuestra bibliotecas compartidas de un binarioldd /usr/bin/ssh
LD_LIBRARY_PATHVariable para rutas temporales de bibliotecasexport LD_LIBRARY_PATH=/opt/lib

pkg-config

ComandoDescripcionEjemplo
pkg-config --cflags PKGMuestra flags de compilacionpkg-config --cflags openssl
pkg-config --libs PKGMuestra flags de enlazadopkg-config --libs openssl
pkg-config --modversion PKGMuestra version del paquetepkg-config --modversion libpng
pkg-config --list-allLista todos los paquetes disponiblespkg-config --list-all
pkg-config --exists PKGVerifica si un paquete existepkg-config --exists libxml-2.0
PKG_CONFIG_PATHVariable para rutas adicionales de archivos .pcexport PKG_CONFIG_PATH=/opt/lib/pkgconfig

Archivos y directorios importantes

RutaDescripcion
/etc/ld.so.confConfiguracion de directorios de bibliotecas
/etc/ld.so.conf.d/Directorio para archivos de configuracion adicionales
/etc/ld.so.cacheCache binario generado por ldconfig
/usr/local/Directorio por defecto para software compilado
/usr/lib/pkgconfig/Archivos .pc de pkg-config
configure.acArchivo fuente para autoconf
Makefile.amArchivo fuente para automake
Makefile.inPlantilla de Makefile generada por automake
CMakeLists.txtArchivo de configuracion de CMake