Dado un paquete fuente que utiliza GNU Automake, la compilación típica es la siguiente:
cd ${srcdir}
./congigure
./make
Para crear un único archivo en lugar de todo, make
normalmente se aceptaría esto:
$ make path/to/file
Sin embargo, eso devuelve un error:
make: *** No rule to make target 'path/to/file'. Stop.
El archivo requerido está en un subdirectorio que contiene su propio archivo MAKE. Es posible ir a ese subdirectorio y hacer ./configure && make file
allí, resolver las dependencias que faltan cada vez que make
falla, hacer algo similar para proporcionar esas dependencias y repetir el proceso hasta que make
se genere exitosamente el archivo requerido.
¿Pero seguramente debe haber una manera más fácil...?
Entonces, asumiendo un paquete típico de Linux que se compila limpiamente con GNU Automake, ¿es posible decirle que cree un solo archivo (específicamente, un ejecutable binario)?
Respuesta1
Si hay un archivo MAKE en el subdirectorio, probablemente necesites invocar ese archivo MAKE.
make -C path/to file
Respuesta2
Lo mejor que se me ocurrió es usar un for
bucle para crear subdirectorios dependientes y luego crear el archivo desde su directorio:
for lib in dependency1 dependency2 dependency3
do
cd ${srcdir}/libs/${lib}
./configure --prefix=/usr
make LDFLAGS+=-lstdc++
done
cd ${srcdir}/libs/directory
./configure --prefix=/usr
--localstatedir=/var \
--mandir=/usr/share/man
make LDFLAGS+=-lstdc++ file
Esto no responde la pregunta, pero me temo que es lo mejor que parece...