ejecutar - instalar archivos makefile
Compilar mĂșltiples archivos C con make (3)
(Estoy ejecutando Linux Ubuntu 9.10, por lo que la extensión de un ejecutable es ejecutablefile.out) Estoy ingresando en la programación modular (programación con múltiples archivos) en C y quiero saber cómo compilar varios archivos en un solo archivo make Por ejemplo, ¿cuál sería el makefile para compilar estos archivos: main.c, dbAdapter.c, dbAdapter.h? (Por cierto, si aún no lo ha descubierto, la función principal está en main.c). ¿También podría alguien publicar un enlace a la documentación de un archivo MAKE?
Los enlaces publicados son todos buenos. Para tu caso particular puedes probar esto. Esencialmente todos los Makefiles siguen este patrón. Todo lo demás son atajos y macros.
program: main.o dbAdapter.o
gcc -o program main.o dbAdapter.o
main.o: main.c dbAdapter.h
gcc -c main.c
dbAdapter.o dbAdapter.c dbAdapter.h
gcc -c dbAdapter.c
La clave aquí es que Makefile mira las reglas de forma secuencial y las compilaciones a medida que se necesitan ciertos elementos.
Primero mirará el programa y verá que para construir el programa necesita algo llamado main.o y dbAdapter.o.
Entonces encontrará main.o. Sin embargo, para compilar main.o, necesitará main.c y dbAdapter.h (supongo que dbAdapter.h está incluido en main.c).
Utilizará esas fuentes para compilar main.o al compilarlo usando gcc. La -c indica que solo queremos compilar.
Hace lo mismo con dbAdapter.o. Cuando tiene esos dos archivos de objeto, está listo para vincularlos. Utiliza el compilador gcc para este paso también. El -o indica que estamos creando un archivo llamado programa.
Ver mi tutorial Makefile: Cómo escribir un Makefile . Proporciona un Makefile bien diseñado que construirá un proyecto de este tipo (con múltiples archivos de origen C y C ++), explica cómo funciona y advierte contra las trampas comunes, así como también sobre las prácticas de makefile deficientes que son demasiado comunes como para encontrarlas en la naturaleza. .
GNU make debería ser lo que estás buscando.