• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Die Bildungsoffensive hier im Forum geht weiter! Jetzt sollen Kreativität und technische Möglichkeiten einen neue Dimension erreichen. Das Thema in diesem Monat lautet - Verkehrte Welt - Hier geht es lang --> Klick

C-Datei wird nicht kompiliert

Alexander

Aargauer Weinapfel
Registriert
09.09.08
Beiträge
749
Hallo,

ich habe (mal wieder) ein Problem mit meinem Compiler...
#include <iostream>#include <vector>
#include <math.h>


usingnamespace std;


int main() {
vector<double> xs(99);
vector<double> ys(99);

for (int i=0; i<100; i++) {
xs.at(i)=i;
ys.at(i)=i+cos(i);
}
cout << xs.at(0);
cout << ys.at(0);
}

Ich wollte das Programm jetzt kompilieren mit: g++ A12 A12.C
Dann hat er mir erzählen wollen, dass es die Datei nicht gibt:
i686-apple-darwin11-llvm-g++-4.2: A12: No such file or directory

Dann habe ich es mal mit g++ -o A12 A12.C versucht, da ich das in einem Programmierkurs mal so gemacht hatte, aber nicht mehr genau weiß was das -o macht. Das ging dann erstaunlicherweise, aber beim Ausführen:
terminate called throwing an exceptionAbort trap: 6

Dann habe ich noch einmal die ausführbare Datei gelöscht und es wieder mit dem ersten Befehl ohne -o versucht. Leider kam dann wieder eine neue Fehlermeldung...
ld: in A12, can't link with a main executable for architecture x86_64

Kann mir jemand sagen was zum Geier da los ist? 2 Befehle - 3 verschiedene Fehlermeldungen und nichts geht...

MfG
 
Erstens solltest Du Dich vielleicht mit der Syntax von g++ beschäftigen; alles, was Du ohne Option angibst, sind Eingabedateien. Daher die Fehlermeldung im ersten Fall - die Eingabedatei A12 existiert nicht.

Mit der Option -o gibst Du den Namen der Ausgabedatei an (wenn sie fehlt, kompiliert g++ in die Datei a.out). Die Fehlermeldung im zweiten Fall rührt daher, dass Du für Deine Vektoren nur 99 Elemente anlegst, aber auf 100 Elemente (0 .. 99) zugreifst.

Ich vermute mal, dass Du im dritten Fall die ausführbare Datei nicht gelöscht hast. Dann existiert die Eingabedatei A12, der Linker kann aber natürlich nichts damit anfangen.
 
Zuletzt bearbeitet:
Vielen Dank für die schnelle Antwort.
Ja die Syntax sollte ich mal besser kennen, habe im Moment leider nicht die Zeit dazu. Ich hoffe das kann ich irgendwann mal nachholen.