gcc bringt Gehler g++ nicht.



  • Hallo,

    ich arbeite normal unter Windows, da ich C++ für mein Ing. Studium lernen muss und das auf Arbeit mache. Dort ist eben Windows auf den Rechnern.

    Wenn ich zu Hause lerne, dann muss ich mit Linux arbeiten, denn ich habe
    kein Win. Das ist aber auch nicht schlimm, denn was ich so am Anfang lerne
    geht alles in der Konsole.

    Jetzt habe ich eine Frage.
    Warum kann g++ das unten stehende Programm übersetzen und gcc nicht?
    Und was genau ist der Unterschied zwischen den beiden, oder was sollte man verwenden?

    #include <iostream>
    #include <cstdio>
    using namespace std;
    
    int main()
    {
    	for (long loop = 1; loop <= 100; ++loop)
    		{
    			long quad, zen;
    			quad = loop * loop;
    			zen = quad % 10;
    			cout << loop << '\t' << quad << '\n';
    			if (!zen)
    			{
    				cout << "Press \" Enter \", please";
    				char enter = getchar();
    
    			}
    
    		}	
    
    	return 0;
    }
    

    gcc bringt diesen Fehler

    natch@notebook:~/c++/übungen$ gcc test.cpp
    /tmp/cc6CrLAG.o: In function `__static_initialization_and_destruction_0(int, int)':
    test.cpp:(.text+0x1d): undefined reference to `std::ios_base::Init::Init()'
    test.cpp:(.text+0x22): undefined reference to `std::ios_base::Init::~Init()'
    /tmp/cc6CrLAG.o: In function `main':
    test.cpp:(.text+0xb8): undefined reference to `std::cout'
    test.cpp:(.text+0xbd): undefined reference to `std::basic_ostream<char, std::char_traits<char> >::operator<<(long)'
    test.cpp:(.text+0xcd): 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)'
    test.cpp:(.text+0xde): undefined reference to `std::basic_ostream<char, std::char_traits<char> >::operator<<(long)'
    test.cpp:(.text+0xee): 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)'
    test.cpp:(.text+0x103): undefined reference to `std::cout'
    test.cpp:(.text+0x108): 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*)'
    /tmp/cc6CrLAG.o:(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
    collect2: ld returned 1 exit status
    snatch@notebook:~/c++/übungen$
    

    Habe den Fehler gefunden, wer lesen kann 😃
    man muss bei gcc "-lstdc++" einbinden, da das wohl ein C/C++ compiler ist.



  • Einfache Antwort:
    gcc ist ein C-Compiler.
    g++ ist ein C++-Compiler.



  • Chewie83 schrieb:

    Einfache Antwort:
    gcc ist ein C-Compiler.
    g++ ist ein C++-Compiler.

    gcc kompiliert auch C-Code. Der erkennt die Sprache an der Dateiendung. Aber der gcc übergibt andere Optionen an den Linker als der g++.


Anmelden zum Antworten