¿Será este el ejemplo?
#include <iostream>
using namespace std;
int main()
{
cout << "Hola, moondo.\n";
}
Lanza el error:
gcc -c main.cpp gcc -o edit main.o main.o: In function `main':
main.cpp:(.text+0xa): undefined reference to `std::cout'
main.cpp:(.text+0xf): undefined reference to `std::basic_ostream<char,std::char_traits<char> >& std::operator<< <std::char_traits<char>>(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
main.o: In function `__static_initialization_and_destruction_0(int,int)':
main.cpp:(.text+0x3d): undefined reference to `std::ios_base::Init::Init()'
main.cpp:(.text+0x4c): undefined reference to `std::ios_base::Init::~Init()' collect2: error: ld
returned 1 exit status make: *** [qs] Error 1
Además, este ejemplo:
#include <iostream>
int main()
{
std::cout<<"Hola, moondo.\n";
}
arroja el error:
gcc -c main.cpp gcc -o edit main.o main.o: In function `main':
main.cpp:(.text+0xa): undefined reference to `std::cout'
main.cpp:(.text+0xf): undefined reference to `std::basic_ostream<char,std::char_traits<char> >& std::operator<<<std::char_traits<char>>(std::basic_ostream<char,std::char_traits<char> >&, char const*)'
main.o: In function `__static_initialization_and_destruction_0(int,int)': main.cpp:(.text+0x3d): undefined reference to `std::ios_base::Init::Init()'
main.cpp:(.text+0x4c): undefined reference to `std::ios_base::Init::~Init()' collect2: error: ld
returned 1 exit status make: *** [qs] Error 1
Nota: Estoy usando Debian Wheezy.

g++lugar degcc.gcces para C y no le dará acceso a la biblioteca estándar de C ++.gcc -o edit main.ono sabe quemain.ova a necesitar bibliotecas de inicio de C ++.Respuestas:
Compila el programa con:
como
coutestá presente en la biblioteca estándar de C ++, que necesitaría un enlace explícito con-lstdc++cuando se usagcc;g++enlaza la biblioteca estándar por defecto.Con
gcc, (g++debe preferirse agcc)fuente
gccfuncionará bien si solo agrega-lstdc++.-Wallal dar ejemplos de línea de comandos de gcc / g ++: ayuda a que los novatos adquieran buenos hábitos en una etapa temprana y ahorra tiempo a todos más adelante. ;-)std::coutparte de la Biblioteca de plantillas estándar?-Walle incluso-Wextraadvierte es un problema muy real o una codificación descuidada que se puede solucionar fácilmente. El mensaje aquí es adquirir un hábito en el que consideres que las advertencias del compilador son un indicador útil para mejorar tu código, en lugar de una molestia. Aquí hay cientos de preguntas sobre SO que no habrían sido necesarias en primer lugar si el OP hubiera utilizado-Wall -Wextra.-Werrores simplemente reforzar eso.Sí, usar el
g++comando funcionó para mí:fuente
./a.outMakefiles
Si está trabajando con un archivo MAKE y terminó aquí como yo, entonces esto es probablemente lo que está buscando o:
Si está utilizando un archivo MAKE, debe cambiarlo
cccomo se muestra a continuacióna
fuente