2016-10-27 10 views
-3

ich diese einfache Datei, genannt lol.cKann keine C++ kompilieren Datei

#include <iostream> 

using namespace std; 

int main() { 
    return(0); 
} 

Vom Terminal, i-Typ g++ lol.c

Dies ist der Ausgang:

In file included from /usr/include/wchar.h:36:0, 
      from /usr/include/c++/4.9/cwchar:44, 
      from /usr/include/c++/4.9/bits/postypes.h:40, 
      from /usr/include/c++/4.9/iosfwd:40, 
      from /usr/include/c++/4.9/ios:38, 
      from /usr/include/c++/4.9/ostream:38, 
      from /usr/include/c++/4.9/iostream:39, 
      from lol.c:1: 



/usr/include/stdio.h:30:22: fatal error: SDL_main.h: File o directory non esistente 
#include "SDL_main.h" 
        ^
compilation terminated. 

I don‘ Ich weiß, wenn das Problem etwas mit SDL ist, aber wenn ich versuche, ../configure zu laufen, um es zu installieren, habe ich dieses:

configure: error: cannot run C compiled programs. 

See `config.log' for more details 

Wenn das nötig ist, kann ich die Datei config.log auch setzen.

Antwort

2

Es gibt mehrere Probleme:

  • Sie gab eine .c Erweiterung auf eine C++ Quelldatei; das ist falsch, C++ - Dateien sollten eine .cpp (oder .cxx, .C, .c++, die letzten beiden sind ein bisschen verpönt) Erweiterung haben, oder der Compiler kann versuchen, es als C-Code zu kompilieren;
  • Sie rufen gcc anstelle von g ++ auf; Das ist auch falsch, wenn gcc in C++ - Dateien aufgerufen wird, fehlen mehrere Optionen, die zum korrekten Kompilieren und Verknüpfen erforderlich sind (einschließlich, aber nicht beschränkt auf das Verknüpfen mit der C++ - Standardbibliothek); das war in einer älteren Revision der Frage, jetzt heißt es g ++;
  • aber am wichtigsten, Ihre Build-Umgebung ist komplett kaputt (einige würden sagen "FUBAR"); Es ist nicht normal, dass /usr/include/stdio.h Sachen von SDL enthält (die Tatsache, dass es nicht gefunden werden kann, ist nur ein kleiner Vorfall im Vergleich zu diesem); Sie sollten wirklich alles entfernen und neu installieren, das mit gcc zusammenhängt, und die Header der C-Bibliothek; Suchen Sie nach einem libc6-dev-Paket (oder ähnlichem), um es neu zu installieren (seien Sie vorsichtig, damit Sie sich nicht mit der eigentlichen C-Bibliothek anlegen, sonst wird Ihr System möglicherweise nicht mehr bootfähig gemacht).
1

Sie können .c (c-Erweiterung) nicht einer C++ Datei geben.

1 - Ändern Sie ihn auf .cpp (C++ Erweiterung, lol.cpp)

2 - Sie haben Optionen zu geben, g ++ (in Ihrem Fall verwenden -o ausführbare Datei erstellen) g++ lol.cpp -o nameofyourprogram

3 - Führen Sie über Ihr Terminal ./nameofyourprogram

+0

Option 2 ist nicht erforderlich. '-o' bedeutet, den Namen der Ausgabedatei zu ändern, es bedeutet nicht, eine ausführbare Datei zu erstellen. Die Verwendung 'g ++ lol.cpp' ohne' -c' bedeutet, dass eine ausführbare Datei erstellt wird. Der Standard-Ausgabename wird verwendet, wenn Sie den Namen nicht mit '-o' ändern. –

+0

Richtig! Vielen Dank! –

Verwandte Themen