2010-11-17 17 views
15

Obtuve un proyecto C para compilar y ejecutar en Linux. Es un proyecto muy grande con muchos subdirectorios. Dentro del directorio padre hay archivos Makefile.am y Makefile.in.No se puede ejecutar Makefile.am, ¿qué debo hacer?

Intenté funcionar make -f Makefile.am, y tiene el siguiente error:

make: Nothing to be done for `Makefile.am'. 

¿Qué significa? ¿Cómo logro mi tarea?

Respuesta

1

Makefile.am es probable que se utilice con automake.

intento:

automake 

también puede ser que sólo quiere probar

make -f Makefile.in 

Dado que este es el producto de correr automake

+0

configure.in o configure.ac son obligatorios – sara

3

Para complementar lo que ya se ha dicho: Buscar un script llamado configure en el directorio del proyecto. Si está allí, la construcción del proyecto será:

./configure

hacen

y, opcionalmente, para instalar:

sudo make install

o su -c "make instalar "

Incluso si no hay configure secuencia de comandos. puede haber uno autogen.sh. Ejecute este script para generar el script de configuración y haga lo anterior.

18

Estos archivos se utilizan con la suite Autotools. Los archivos Makefile.am se compilan en Makefiles usando automake.

Eche un vistazo para ver si hay una secuencia de comandos configure en el directorio. Si la hay, a continuación, escriba:

./configure 

Si no es así, a continuación, ejecute:

autoreconf 

en el directorio, que debe crear el guión configure (necesitará tener la suite Autotools instalado para ejecutar este)

Después de eso, debe tener una secuencia de comandos configure que pueda ejecutar.

Después de la configure se ha completado, usted debe tener un Makefile normal en el directorio, y será capaz de ejecutar

make 
+0

autoreconf: comando no encontrado – sara

+2

Como dije, necesitará tener el conjunto de Autotools instalado para ejecutar ese comando. Eche un vistazo aquí: http://sourceware.org/autobook/autobook/autobook_274.html –

+0

instalé. ahora dice que necesita configure.in o configure.ac – sara

4

Lo que se ha dejado de lado:

  • Makefile.am se transforman a Makefile.in usando automake.
  • Makefile.in se transforman en Makefile ejecutando configure.

Ninguno de estos (Makefile. {Am, in}) se supone que se utilizan con make -f.

Si el archivo tarball ya viene con la configuración, simplemente ejecútelo y haga. Si no es así, ejecute ./autogen.sh o bootstrap (*). Si eso no existe, use autoreconf en su lugar.

(*) autogen/bootstrap: Una secuencia de comandos de conveniencia agregada por los desarrolladores que debe simplemente llame al autoreconf. Desafortunadamente, hay algunas personas que evitan el autoreconf y llaman innecesariamente a todos los comandos de bajo nivel.

Cuestiones relacionadas