sysvorOrt /home/michi/programmierung/c++ # gcc einkauf.cpp 
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: /tmp/cc8ykjAd.o: warning: relocation against `_ZSt4cout' in read-only section `.text'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: /tmp/cc8ykjAd.o: in function `main':
einkauf.cpp:(.text+0x45): undefined reference to `std::cout'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: einkauf.cpp:(.text+0x4d): 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*)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: einkauf.cpp:(.text+0x54): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: einkauf.cpp:(.text+0x5e): undefined reference to `std::cout'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: einkauf.cpp:(.text+0x66): undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: einkauf.cpp:(.text+0x74): undefined reference to `std::cin'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: einkauf.cpp:(.text+0x7c): undefined reference to `std::istream::operator>>(int&)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: einkauf.cpp:(.text+0x9c): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: einkauf.cpp:(.text+0xa6): undefined reference to `std::cout'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: einkauf.cpp:(.text+0xae): undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: einkauf.cpp:(.text+0xbf): undefined reference to `std::cout'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: einkauf.cpp:(.text+0xc7): 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*)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: einkauf.cpp:(.text+0xd9): undefined reference to `std::ostream::operator<<(float)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: einkauf.cpp:(.text+0xe0): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: einkauf.cpp:(.text+0xea): undefined reference to `std::cout'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: einkauf.cpp:(.text+0xf2): undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: einkauf.cpp:(.text+0x103): undefined reference to `std::cout'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: einkauf.cpp:(.text+0x10b): 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*)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: einkauf.cpp:(.text+0x112): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: einkauf.cpp:(.text+0x11c): undefined reference to `std::cout'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: einkauf.cpp:(.text+0x124): undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: einkauf.cpp:(.text+0x132): undefined reference to `std::cin'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: einkauf.cpp:(.text+0x13a): undefined reference to `std::istream::operator>>(int&)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: einkauf.cpp:(.text+0x173): undefined reference to `std::cout'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: einkauf.cpp:(.text+0x17b): 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*)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: einkauf.cpp:(.text+0x189): undefined reference to `std::cout'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: einkauf.cpp:(.text+0x191): undefined reference to `std::ostream::operator<<(float)'
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld: warning: creating DT_TEXTREL in a PIE
collect2: Fehler: ld gab 1 als Ende-Status zurück

Diese Fehlermeldungen deuten darauf hin, dass der Linker die Implementierungen der std::cout, std::cin, std::ostream und std::istream nicht finden kann. Das liegt daran, dass du die C++-Standardbibliothek nicht beim Linken eingebunden hast.

Lösung

Um dieses Problem zu beheben, musst du die Option -lstdc++ an den gcc-Befehl anhängen, um die C++-Standardbibliothek zu verlinken. Der Befehl sollte dann so aussehen:

gcc einkauf.cpp -lstdc++

Oder wenn du die Ausgabe in eine ausführbare Datei namens „einkauf“ schreiben möchtest:

gcc einkauf.cpp -lstdc++ -o einkauf

Die Option -lstdc++ weist den Linker an, die C++-Standardbibliothek einzubinden, die die Implementierungen von std::cout, std::cin, std::ostream, std::istream und anderen wichtigen C++-Funktionen enthält.Nachdem du diesen Befehl ausgeführt hast, sollte dein Programm ohne Linkerfehler kompilieren und ausführbar sein.