Tengo un archivo llamado "main.c". ¿Cuál es el Makefile más simple que puedo tener para compilar este archivo en un ejecutable que puedo ejecutar como ./blah
?¿Cuál es el más simple ¿PUEDO tener las obras para un único archivo C?
Respuesta
all:
gcc -o blah main.c
No necesita makefile aquí, el script de shell simple está bien.
all: blah
blah: main.c
gcc main.c -o blah
Escribí y publiqué mi respuesta antes de mostrar cualquier otra cosa, y no vi la etiqueta de 'tarea'. Estoy de acuerdo con Chris Lutz; no llegarás a ningún lado en la vida pidiendo ayuda en asignaciones tan miserables. –
'all: blah' hace que esto sea menos simple que debe ser y también puede romper cosas si un archivo llamado' all' en realidad existiera. Aparte de este punto, esta es la mejor respuesta. –
En realidad, después de pensarlo más, en este caso simple un archivo llamado 'all' probablemente no va a romper la comprobación de dependencia; sigue siendo redundante ya que make tratará al primer objetivo como el objetivo predeterminado en cualquier caso. –
si se está ejecutando GNU Make y si no es necesario enlazar en las bibliotecas adicionales, el makefile más simple hay makefile en absoluto. Proveedores:
make main
Si no quieren tener que especificar main
, a continuación, puede utilizar la línea siguiente Makefile:
all: main
GNU Make tiene varias reglas implícitas que utiliza si no los definas tú mismo. La que hace que este trabajo es algo así como:
%: %.c
$(CC) $^ -o [email protected]
Para obtener más información, véase: http://www.gnu.org/software/make/manual/make.html#Using-Implicit
Aparentemente, la tarea requiere que la salida sea 'blah', no' main', por lo que necesitará un Makefile. Lo anterior sigue siendo información útil, pero no se aplicará aquí. –
Si su ejecutable debe llamarse 'blah', lo más fácil sería simplemente cambiar el nombre de su archivo fuente a' blah.c' si esto está permitido. –
@ T.J.Crowder: 'blah' no parece ser un requisito, sino más bien un ejemplo: OP dijo" que puedo ejecutar * como * './Blah'". Entonces, este '' Makefile '' de un solo lienzo parece estar bien – MestreLion
El más simple que recomendaría es:
myprog: myprog.o
$(CC) -o [email protected] @^
Via reglas implícitas, esto dará lugar a un paso separado que compila myprog.c
a myprog.o
antes de vincularlo. La razón por la que me gusta esta mejor que la otra respuesta (por Arnaud) es que las escalas de varios archivos originales sin tener que agrandar el makefile significativamente:
myprog: myprog.o foo.o bar.o helper.o my.o your.o his.o her.o
$(CC) -o [email protected] @^
¿Debería ser '$ ^' en lugar de '@ ^'? – user2023370
Como dijo Jander, si la fuente es un archivo único llamado blah.c
usted podría utilizar esta opción para emitir un ejecutable llamado blah
:
all: blah
O incluso:
blah:
Todo lo demás es implícita al usar GNU make
Si bien esto es extremadamente simple, que tiene algunas ventajas sobre algunas de las respuestas más complejas:
- compilador no está codificado: deje que su entorno de elegir
gcc
para usted! - El nombre de su programa se establece solo una vez, una buena práctica de programación DRY.
- No crea archivos intermedios
*.o
que no son necesarios para este proyecto simple.
Dicho esto, me sugieren fuertemente que usted mejore su Makefile
mediante la adición de al menos clean
y all
reglas y -Wall
banderas.Esto se puede hacer con la siguiente Makefile
, manteniendo todas las ventajas anteriores:
TARGET=blah CFLAGS=-Wall .PHONY: all clean all: $(TARGET) $(TARGET): clean: rm -f $(TARGET)
- 1. ¿Cuál es la implementación más simple de RTTI para C++?
- 2. C#: ¿Cuál es la forma más rápida de generar un nombre de archivo único?
- 3. ¿Cuál es la cuerda más larga que puedo tener?
- 4. ¿Cuál es el marco de WSGI más simple/más liviano?
- 5. Manera más simple de tener un archivo de configuración en una aplicación de Windows Forms C#
- 6. Cuál es el identificador único para un elemento DOM/nodo
- 7. ¿Cuál es el controlador MongoDB más maduro para C#?
- 8. ¿Cuál es la función C# más simple para analizar una cadena JSON en un objeto?
- 9. ¿Cuál es la forma más rápida de usar un único archivo abierto?
- 10. ¿Cuál es el algoritmo más simple para escapar de un solo personaje?
- 11. ¿El nombre de un paquete es único para las aplicaciones?
- 12. ¿Cuál es el método más simple para llenar el área bajo una línea geom_freqpoly?
- 13. ¿Cuál es la consulta SQL más simple para encontrar el segundo valor más grande?
- 14. ¿Cuál es el algoritmo de análisis más simple que puede analizar el código C?
- 15. ¿Cuál es el punto de un archivo .cpp que contiene solo un único #include?
- 16. ¿Cuál es la forma más elegante de leer un archivo de texto con C++?
- 17. ¿Cuál es el método más simple de comunicación entre procesos entre 2 procesos C#?
- 18. En Vim, ¿cuál es la forma más simple de unir todas las líneas de un archivo en una sola línea?
- 19. ¿Cuál es la forma más simple de usar SSH Python?
- 20. ¿Cuál es el tamaño más grande que puede tener un archivo de instalador de paquete de Windows .msi?
- 21. ¿Cuál es el mejor y más simple programa para subir archivos ajax?
- 22. ¿Cuál es el encabezado de Windows más pequeño que puedo #incluir para definir DWORD?
- 23. Para inicializar un campo transitorio, ¿cuál es la solución más simple
- 24. ¿Cuál es el método * correcto * más simple para detectar rectángulos en una imagen?
- 25. C# trace o registro más simple
- 26. ¿Hay un parámetro api order_by/sort en las obras?
- 27. ¿Cómo puedo tener más control en ASP.NET?
- 28. ¿Cuál es el método más rápido/más seguro para iterar sobre un HashSet?
- 29. ¿Es importante el orden de las reglas dentro de un único archivo css?
- 30. ¿Cuál es la expresión regular más simple para validar correos electrónicos para no aceptarlos a ciegas?
Por favor, haga un esfuerzo para hacer su tarea antes de pedirlo. Hay una razón por la que su profesor quiere que use un Makefile, para que pueda aprender a escribir Makefiles para proyectos más útiles. –
Lo siento, no fue para molestar a la policía de deberes. Intenté buscar en Google, pero el Makefile obviamente es increíblemente poderoso y puede ser extremadamente complejo. Reconozco que tengo algunos problemas para comprenderlo en gran medida. Esta asignatura no es un tema de programación, pero la evaluación requiere un código C para llamar a las funciones nativas del sistema operativo. Nunca antes había tocado C, y esta tarea vence en un par de horas. Estaba frustrado, desesperado y necesitaba ayuda. lo siento si te molesto. – Ash