¿Qué hace la opción ‘-c’ en GCC? [closed]

3 minutos de lectura

Avatar de usuario de Weadadada Awda
Weadadada Awda

Lo que hace el -c bandera hacer en gcc?

Por ejemplo, ¿cuál es la diferencia entre

gcc -c output0.c

y

gcc output0.c

?

Sé que el segundo hace un .a archivo, pero no sé qué .a el archivo es.

Además, ¿qué hace -o matar

gcc output0.o -o output0

¿Es solo para nombrar el archivo de salida, verdad?

  • te recomiendo que leas el documentación en línea. Por ejemplo, la sección denominada “3.2 Opciones que controlan el tipo de salida”

    – Un tipo programador

    6 de febrero de 2013 a las 8:12


  • Creo que lo mejor que puedes hacer es leer la página del manual de gcc.

    – Pedro Rodríguez

    6 de febrero de 2013 a las 8:12

  • “Compilar solo” gcc -c produce solo un archivo de objeto. Para producir un ejecutable, debe volver a llamar al enlazador. Quizás, man gcc? 🙂

    – PP

    6 de febrero de 2013 a las 8:12

  • En general, al observar las otras preguntas que ya hizo, debe aprender a usar la información disponible gratuitamente antes de molestar a otros con sus preguntas. Si está en un sistema Linux, man es tu amigo. Y si no lo encuentra localmente, primero use un motor de búsqueda.

    – Jens Gusted

    6 de febrero de 2013 a las 8:20


Avatar de usuario de StarPinkER
rosaestrella

-C

Compile o ensamble los archivos fuente, pero no los vincule. La etapa de vinculación simplemente no ha terminado. El resultado final tiene la forma de un archivo de objeto para cada archivo de origen.

De forma predeterminada, el nombre del archivo de objeto para un archivo de origen se crea reemplazando el sufijo .c, .i, .s, etc., con .o. Los archivos de entrada no reconocidos, que no requieren compilación o ensamblaje, se ignoran.

-o archivo

Coloque la salida en archivo archivo. Esto se aplica independientemente del tipo de salida que se produzca, ya sea un archivo ejecutable, un archivo de objeto, un archivo ensamblador o un código C preprocesado. Si no se especifica -o, el valor predeterminado es colocar un archivo ejecutable en a.out, el archivo de objeto para source.suffix en source.o, su archivo ensamblador en source.s, un archivo de encabezado precompilado en source.suffix.gch , y todas las fuentes C preprocesadas en salida estándar.

Se puede encontrar más en Página del manual de GCC

Avatar de usuario de GVerse
Verso

De man gcc (sección “Opciones que controlan el tipo de salida”):

-C Compile o ensamble los archivos fuente, pero no los vincule. La etapa de vinculación simplemente no ha terminado. El resultado final tiene la forma de un archivo de objeto para cada archivo de origen.

De forma predeterminada, el nombre del archivo de objeto para un archivo de origen se crea reemplazando el sufijo .c, .i, .s, etc., con .o.

Los archivos de entrada no reconocidos, que no requieren compilación o ensamblaje, se ignoran.

Avatar de usuario de JoG
Empujoncito

-C indicará a GCC que solo compile el archivo fuente en un archivo .o (objeto), pero no invocará al enlazador.

Con un proyecto que contiene muchos archivos .c, normalmente compilará primero todos los archivos .c en archivos .o y luego vinculará todo junto con las bibliotecas.

-C

Compile o ensamble los archivos fuente, pero no los vincule. La etapa de vinculación simplemente no ha terminado. El resultado final tiene la forma de un archivo de objeto para cada archivo de origen.

De forma predeterminada, el nombre del archivo de objeto para un archivo de origen se crea reemplazando el sufijo >.c, .i, .s, etc., con .o.

Los archivos de entrada no reconocidos, que no requieren compilación o ensamblaje, se ignoran.

Fuente

¿Ha sido útil esta solución?