[C/C++] Kompilieren unter Ubuntu

Ich habe die Lösung.
1. Es lag nicht an den Warnungen
§1 Damit schliesst sich ein Fehler im Code *teilweise* aus.
2. Es lag auch nicht am Compiler (auch wenn Code::Blocks permanent eine 85kb statt 119kb Datei ausspuckt)
3. Es lag einfach nur an einer schrecklichen Dummheit.

Tja, wenn man im Code nach "\\" sucht, findet man so einiges...
Unix möchte aber "/" haben.

Also nochmal für alle, die dasselbe Problem haben (werden):
Windows schreibt Pfade mit \ (im Code "\\")
Unix schreibt Pfade mit / (im Code "/")

*schäm*

cwriter
 
Ich habe die Lösung.
1. Es lag nicht an den Warnungen
Das habe ich übrigens auch nicht behauptet.
§1 Damit schliesst sich ein Fehler im Code *teilweise* aus.
Hast du denn nun alle Warnungen beseitigt? Wie gesagt, es ist eine schwerwiegende dabei, die unter bestimmten Bedingungen einen Absturz verursacht.
2. Es lag auch nicht am Compiler (auch wenn Code::Blocks permanent eine 85kb statt 119kb Datei ausspuckt)
Statisch vs. dynamische Bibliotheken, Windows und Linux Binaries sind auch nicht wirklich dahingehend vergleichbar.
3. Es lag einfach nur an einer schrecklichen Dummheit.

Tja, wenn man im Code nach "\\" sucht, findet man so einiges...
Unix möchte aber "/" haben.

Also nochmal für alle, die dasselbe Problem haben (werden):
Windows schreibt Pfade mit \ (im Code "\\")
Unix schreibt Pfade mit / (im Code "/")
Windows kann übrigens auch mit einem / umgehen.

Ansonsten hast du uns aber wohl etwas für dumm verkauft.
cwriter hat gesagt.:
Debugger: Keine Fehler
Fehler: Keine Ausgabe. Es wird nur 0x0 zurückgegeben, was der return am Ende ist.
Das kann so nie und nimmer stimmen, da das erste was du machst ein printf("*\n"); ist, welches definitiv ausgegeben wird wenn man das Programm startet - auch unter Linux.

Gut, wir wissen auch nicht wie du das Program gestartet hast (gehört zu einer Fehlerbeschreibung dazu...), könnte sein das du
Code:
./a.out </dev/null >/dev/null
ausgeführt hast. Dann ist aber klar, dass keine Ausgabe kam.

Gruß
 
Ja ok, das mit dem Asterisk habe ich irgendwie übersehen. Und ja, ich habe sämtliche Fehler beseitigt und auch auf der Windows-Variante ausgeglichen. So gesehen hat sich die Mühe gelohnt :-)
Wie gesagt, es ist eine schwerwiegende dabei, die unter bestimmten Bedingungen einen Absturz verursacht.
Nur eine? :-P
Ich habe zwei gefunden :-)

Gestartet habe ich übrigens mit
Code:
/.out.a
und je nachdem noch mit einigen Parametern.

Statisch vs. dynamische Bibliotheken, Windows und Linux Binaries sind auch nicht wirklich dahingehend vergleichbar.
Linux + Code::Blocks: 85kb
Linux + Terminal + g++: 119.5kb
Windows + Dev-Cpp + MinGW: 404kb

Gruss
cwriter
 
Und ja, ich habe sämtliche Fehler beseitigt und auch auf der Windows-Variante ausgeglichen. So gesehen hat sich die Mühe gelohnt :-)

Nur eine? :-P
Ich habe zwei gefunden :-)
Gut! Ich habe mir nicht jede Warnung angeschaut. Es waren zuviele ;-)
Gestartet habe ich übrigens mit
Code:
/.out.a
Äh?
Code:
./a.out
Linux + Code::Blocks: 85kb
Linux + Terminal + g++: 119.5kb
Windows + Dev-Cpp + MinGW: 404kb
Da mußt du dir von Code::Blocks / Dev-Cpp schon mal die g++ Optionen ausgeben lassen. Evtl. gestrippt (-s), auf Code-Größe optimiert (-Os), ohne Exceptions (-fno-exceptions), ohne Framezeiger (-fomit-frame-pointer) usw.

Gruß
 
Ja genau. Ich sollte früher zu Bett gehen :-)

Anderes Problem:
Kompiliert unter Ubuntu -> läuft
Versuch auf Cygwin: läuft nicht.
Code:
./a.out: cannot execute binary file
Was soll das schon wieder? Ich dachte, dass die verschiedenen Linux-Distributionen untereinander kompatibel sind?
BTW, läuft ein Linux Programm auch unter Macintosh?

Achja, und
Code:
-fexceptions
War tatsächlich unter Zusätzliche Optionen zu finden.
Gruss
cwriter
 
Anderes Problem:
Kompiliert unter Ubuntu -> läuft
Versuch auf Cygwin: läuft nicht.
Code:
./a.out: cannot execute binary file
Was soll das schon wieder? Ich dachte, dass die verschiedenen Linux-Distributionen untereinander kompatibel sind?
Ja, sind sie auch.

Nur, Cygwin ist kein Linux. Cygwin ist immer noch Windows (plus Unix-Kompatibilitäts-Bibliotheken).

Der Compiler unter Cygwin erzeugt auch kein a.out, sondern eine a.exe.
BTW, läuft ein Linux Programm auch unter Macintosh?
Nein, nicht ohne Rekompilation.
Achja, und
Code:
-fexceptions
War tatsächlich unter Zusätzliche Optionen zu finden.
-fexceptions ist eigentlich die Voreinstellung. Um die Größe des Binaries zu reduzieren, müßte es -fno-exceptions heißen.

Gruß
 
Zurück