Zal dit het voorbeeld zijn:
#include <iostream>
using namespace std;
int main()
{
cout << "Hola, moondo.\n";
}
het gooit de fout:
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
Ook dit voorbeeld:
#include <iostream>
int main()
{
std::cout<<"Hola, moondo.\n";
}
Werp de fout:
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
Opmerking: ik gebruik Debian Wheezy.
Antwoord 1, autoriteit 100%
Compileer het programma met:
g++ -Wall -Wextra -Werror -c main.cpp -o main.o
^^^^^^^^^^^^^^^^^^^^ <- For listing all warnings when your code is compiled.
as cout
aanwezig is in de C++-standaardbibliotheek, waarvoor expliciete koppelingmet -lstdc++
nodig is bij gebruik van gcc
; g++
koppelt standaard de standaardbibliotheek.
Met gcc
, (g++
verdient de voorkeur boven gcc
)
gcc main.cpp -lstdc++ -o main.o
Antwoord 2, autoriteit 16%
Ja, het gebruik van de opdracht g++
werkte voor mij:
g++ my_source_code.cpp
Antwoord 3
Ervan uitgaande dat code.cpp
de broncode is, zal het volgende geen fouten veroorzaken:
make code
./code
Hier compileert het eerste commando de code en maakt een uitvoerbaar bestand met dezelfde naam, en het tweede commando voert het uit. Het is in dit geval niet nodig om het trefwoord g++
op te geven.
Antwoord 4
Makebestanden
Als je met een makefile werkt en je bent hier net als ik beland, dan is dit waarschijnlijk wat je zoekt of:
Als je een makefile gebruikt, moet je cc
wijzigen zoals hieronder weergegeven
my_executable : main.o
cc -o my_executable main.o
naar
CC = g++
my_executable : main.o
$(CC) -o my_executable main.o