programa - Determinación del nombre del ejecutable C
que es compilar y ejecutar (5)
Compilar utilizando:
cc -o <opfilename> <filename.c>
Ejecutar utilizando:
./<opfilename>
Cuando estamos compilando un programa en C, la salida se almacena en a.out. ¿Cómo podemos redirigir la salida compilada a otro archivo?
En Unix, donde se originó C, los programas de C generalmente se compilan módulo por módulo, y luego los módulos compilados se vinculan a un ejecutable. Para un proyecto que consta de los módulos foo.c
y bar.c
, los comandos serían así:
cc -c foo.c
cc -c bar.c
cc -o myprog foo.o bar.o
(Con -c, el nombre de archivo de salida se convierte en el archivo de origen con el sufijo reemplazado con .o.)
Esto le permite también volver a compilar solo aquellos módulos que han cambiado, lo que puede ser un gran ahorro de tiempo para programas grandes, pero también puede ser bastante complicado. (Esta parte se suele automatizar utilizando make
.)
Para un programa de un solo módulo no hay realmente ningún punto en compilar primero en un archivo .o, y luego vincularlo, por lo que un solo comando es suficiente:
cc -o foo foo.c
Para los programas de un solo módulo, es habitual llamar al programa ejecutable resultante el mismo que el archivo fuente C sin el sufijo .c. Para los programas de múltiples módulos, no hay una costumbre estricta sobre si la salida lleva el nombre del archivo con la función principal o no, por lo que es libre de inventar lo que más le guste.
Según el manual:
-o <file> Place the output into <file>
-ofilename
creará un filename
de filename
lugar de a.out
.
La mayoría de los compiladores de C proporcionan la opción -o
para esto, como:
gcc -o gentext gentext.c
cc -o mainprog -Llib -lmymath firstbit.c secondbit.o
xlc -o coredump coredump.c