make instalar ejecutar create compilar como comando archivos c makefile compilation modular

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.