ejecutar con compilar compilador c++ gcc g++ gnu

c++ - con - gcc linux



Compilando un programa en C++ con gcc (7)

De forma predeterminada, gcc selecciona el idioma según la extensión del archivo, pero puede forzar a gcc para seleccionar un backend de idioma diferente con la opción -x así:

gcc -x c++

Se detallan más opciones en la página del manual de gcc en "Opciones que controlan el tipo de salida". Ver, por ejemplo, http://linux.die.net/man/1/gcc (buscar en la página el texto -x language ).

Esta función es muy útil en casos donde gcc no puede adivinar el idioma usando una extensión de archivo, por ejemplo, si está generando código y alimentándolo a gcc vía stdin.

Pregunta: ¿Cómo compilar un programa en C ++ con el compilador gcc?

info.c:

#include<iostream> using std::cout; using std::endl; int main() { #ifdef __cplusplus cout << "C++ compiler in use and version is " << __cplusplus << endl; #endif cout <<"Version is " << __STDC_VERSION__ << endl; cout << "Hi" << __FILE__ << __LINE__ << endl; }

y cuando intento compilar info.c

$ gcc info.C

Undefined first referenced symbol in file cout /var/tmp/ccPxLN2a.o endl(ostream &) /var/tmp/ccPxLN2a.o ostream::operator<<(ostream &(*)(ostream &))/var/tmp/ccPxLN2a.o ostream::operator<<(int) /var/tmp/ccPxLN2a.o ostream::operator<<(long) /var/tmp/ccPxLN2a.o ostream::operator<<(char const *) /var/tmp/ccPxLN2a.o ld: fatal: Symbol referencing errors. No output written to a.out collect2: ld returned 1 exit status

¿No es capaz el compilador gcc de compilar programas C ++? En una nota relacionada, ¿cuál es la diferencia entre gcc y g ++. Gracias,


Funciono bien para mi. Solo un código de línea en cmd.

Primero, confirme que ha instalado el compilador gcc (para c) o g ++ (para c ++).

En cmd para el tipo de gcc:

gcc --version

en cmd para el tipo de g ++:

g ++ --versión

Si está instalado, entonces proceda.

Ahora, compila tu .c o .cpp usando cmd

para la sintaxis .c :

gcc -o exe_filename yourfilename.c

Ejemplo:

gcc -o myfile myfile.c

Aquí exe_filename (miarchivo en el ejemplo) es el nombre de tu archivo .exe que deseas producir después de la compilación (Nota: no he puesto ninguna extensión aquí). Y yourfilename.c (myfile.c en el ejemplo) es su archivo fuente que tiene la extensión .c.

Ahora vaya a la carpeta que contiene su archivo .c, aquí encontrará un archivo con la extensión .exe. Solo ábrelo. Viva..

Para la sintaxis .cpp :

g ++ -o exe_filename yourfilename.cpp

Después de esto, el proceso es el mismo que para .c.


La diferencia entre gcc y g ++ son:

gcc | g++ compiles c source | compiles c++ source

Usa g ++ en lugar de gcc para compilar tu fuente de c ++.


Si le da al código una extensión .c el compilador piensa que es código C, no C ++. Y el controlador del compilador C ++ se llama g ++; si usa el controlador gcc, tendrá problemas con los enlazadores, ya que las bibliotecas estándar de C ++ no se vincularán de forma predeterminada. Entonces quieres:

g++ myprog.cpp

Y ni siquiera considere usar una extensión .C en mayúscula, a menos que nunca quiera portar su código, y está preparado para ser odiado por aquellos con quienes trabaja.


Si recuerdo correctamente, gcc determina el tipo de archivo del sufijo. Entonces, hazlo foo.cc y debería funcionar.

Y, para responder a su otra pregunta, esa es la diferencia entre "gcc" y "g ++". gcc es una interfaz que elige el compilador correcto.


gcc realmente puede compilar el código de C ++ bien. Los errores que recibió son errores del enlazador , no errores del compilador.

Las probabilidades son que si cambia la línea de compilación es la siguiente:

gcc info.C -lstdc++

lo que hace que se vincule a la biblioteca estándar de C ++, entonces funcionará perfectamente.

Sin embargo, deberías hacerte la vida más fácil y usar g ++.

EDITAR:

Rup dice mejor en su comentario a otra respuesta:

[...] gcc seleccionará el compilador de fondo correcto basado en la extensión de archivo (es decir, compilará un .c como C y un .cc como C ++) y vinculará los binarios solo con las bibliotecas de ayuda estándar C y GCC de forma predeterminada independientemente de idiomas de entrada; g ++ también seleccionará el back-end correcto basado en la extensión excepto que creo que compila todas las fuentes C como C ++ (es decir, compila tanto .c como .cc como C ++) e incluye libstdc ++ en su paso de enlace independientemente de los idiomas de entrada.


usa g++ lugar de gcc .