(estoy ejecutando Linux Ubuntu 9.10, por lo que la extensión de un archivo ejecutable es archivo ejecutable.out) Acabo de ingresar a 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 archivo MAKE 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?Compila múltiples archivos C con make
Respuesta
Ver mi Makefile Tutorial: How To Write A Makefile. Proporciona un Makefile bien diseñado que construirá un proyecto de este tipo (con múltiples archivos fuente de C y C++), explica cómo funciona y advierte sobre peligros comunes y malas prácticas de mapeo que son demasiado comunes para encontrarse en la naturaleza. .
GNU make debería ser lo que estás buscando.
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 el Makefile mira reglas secuencialmente y construye son necesarios como ciertos artículos.
Primero verá el programa y verá que para crear el programa necesita algo llamado main.o y dbAdapter.o.
A continuación, encontrará main.o. Sin embargo, para compilar main.o, necesitará main.c y dbAdapter.h (supongo que dbAdapter.h se incluye en main.c).
Utilizará esas fuentes para compilar main.o compilando usando gcc. El -c indica que solo queremos compilar.
Hace lo mismo con dbAdapter.o. Cuando tiene esos dos archivos objeto, está listo para vincularlos. Utiliza el compilador gcc para este paso también. El -o indica que estamos creando un archivo llamado programa.
... excepto que no debe codificar el compilador, y debe aprovechar las reglas de compilación predefinidas ... vea mi tutorial. –
Bueno, por supuesto, tienes razón. Pero el OP es relativamente nuevo en Makefiles y solo quería mostrar el proceso subyacente sin ningún tipo de indirección. – aduric
"Pero el OP es relativamente nuevo para los Makefiles", lo que debería hacer que lo inicie por el camino correcto en lugar de poner errores comunes en su primer ejemplo. – mk12
- 1. makefiles - compila todos los archivos c a la vez
- 2. Maven compila con múltiples directorios src
- 3. ¿Compila un C++ .lib con solo archivos de encabezado?
- 4. Trabajando con múltiples extensiones de archivos de origen en un archivo MAKE
- 5. gmake compila todos los archivos en un directorio
- 6. ¿Compila todos los archivos C# en un solo archivo?
- 7. ¿Los archivos MAKE están completos?
- 8. CRealice e incluyendo otros archivos make
- 9. Compila lua incrustado en C
- 10. fichero Make: compilar todos los archivos .cpp a .o archivos
- 11. código se compila con OpenCV Bibliotecas
- 12. Múltiples archivos adjuntos con Swiftmailer
- 13. ¿Qué archivos copiaron `make install` y dónde?
- 14. ¿Comprimir múltiples archivos JavaScript con YUIcompressor?
- 15. Makefile con objetivos múltiples
- 16. GNU make: objetivos múltiples en una sola regla
- 17. Eclipse C/C++ ¿Muestra errores pero compila?
- 18. Controlando la verbosidad de make
- 19. Usar make con msysgit
- 20. Múltiples archivos fuente en C- ¿Cómo funcionan exactamente los makefiles?
- 21. cómo organizar un Makefile para compilar un módulo del núcleo con múltiples archivos .c?
- 22. ¿Cómo cambiar la extensión de cada archivo en una lista con múltiples extensiones en GNU make?
- 23. mínimo C++ make file for linux
- 24. C++ 11 make_pair con parámetros de plantilla especificados no compila
- 25. ¿Compila el código de C++ para AIX en Ubuntu?
- 26. comando para compilar archivos c con archivos .a
- 27. Múltiples archivos de configuración con Python ConfigParser
- 28. Múltiples archivos de registro con log4j
- 29. Crear Nuget paquete con múltiples archivos DLL
- 30. Carga de archivos múltiples con jQuery
Acabo de actualizarlo y estaría encantado de escuchar sus comentarios. –
Link está muerto a partir de ahora. – Pat
@MichaelAaronSafyan Dado que está buscando soporte multiplataforma, ¿tiene algún consejo para limpiar el archivo de programa cuando en Windows se envía a $ (program_NAME) .exe? –