• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> 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
 

martinv2

Doppelter Prinzenapfel
Registriert
14.04.12
Beiträge
437
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:

Alexander

Aargauer Weinapfel
Registriert
09.09.08
Beiträge
749
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.