C C-Compiler erkennt C-Datei nicht

B

beginner.126

Gast
Hallo zusammen,

kleiner "Disclaimer" vorab von mir: Ich fange gerade erst an, mich mit dem Programmieren im Allgemeinen und mit der Sprache C im Besonderen auseinanderzusetzen.

Kurzum, mein Compiler scheint meine zuletzt geschriebenen C-Dateien (kleine Programme) nicht zu erkennen.
Kurzer Ablauf bis hierher:
Vor ein paar Tagen lade ich mir das Programm "WinGW" herunter. Installiere es daraufhin, wie es eine Anleitung wünscht. Schreibe mit dem Editor zwei Programme, lasse sie mir von der cmd-Konsole ausführen. Funktioniert.
Später schreibe ich noch weitere Programme mit dem Editor, und beim Ausführen kommt fortan immer die Standardnachricht, dass der Befehl entweder falsch geschrieben ist oder nicht gefunden werden konnte.

Dabei liegen die Dateien exakt in demselben Verzeichnis wie auch die ersten beiden Programme die ich ausführen konnte. Wenn ich allerdings alle Dateien in andere Verzeichnise kopiere, und sie dann versuche von dort aus auszuführen, bekomme ich auch immer die Nachricht wie oben.
Alle Dateien sind ordentlich als C-Dateien abgespeichert, und an den Skripten kann es ja nicht liegen.
Später dann installiere ich noch ein zweites Compilierprogramm ("Cygwin64"), versuche dort meine Programme auszuführen. Ergebnis ist: Meine ersten zwei Programme laufen, die anderen wiederum nicht.

Wo könnte das Problem liegen?

Vielen Dank für eure Antworten.

beginner.126
 
beginner.126 schrieb:
Später schreibe ich noch weitere Programme mit dem Editor, und beim Ausführen kommt fortan immer die Standardnachricht, dass der Befehl entweder falsch geschrieben ist oder nicht gefunden werden konnte.
Was wird denn jetzt nicht gefunden, die C-Datei oder der Compiler?

Wenn es jetzt tatsächlich die geschriebenen Dateien sind, hast du da beim Namen irgendwelche Sonderzeichen o.Ä. drin? Auch Leerzeichen z.B. sollte man nach Möglichkeit vermeiden.
 
Du solltest Dich mal mit dem Prozess der Programmerstellung befassen
C ist eine Compilersprache, die C-Dateien werden nicht ausgeführt, sondern umgewandelt - möglicherweise in eine Kommandozeilen-Applikation, kann aber auch was völlig anderes sein.
Du kannst keine .c ausführen, da muss eine .exe gebaut werden (Im gegensatz zu z.b. python, wo man die .py direkt über den python interpreter ausführen kann)
 
  • Gefällt mir
Reaktionen: Incanus
whiper schrieb:
Du kannst keine .c ausführen, da muss eine .exe gebaut werden (Im gegensatz zu z.b. python, wo man die .py direkt über den python interpreter ausführen kann)
Tue ich das, kommt folgender Dialog: "Nicht unterstützte 16 Bit-Anwendung." und die Nachricht: "noten.exe ist mit der ausgeführten Windows-Version nicht kompatibel."

Wundere mich bloß, dass meine ersten beiden Programme umgewandelt werden konnten.
Ergänzung ()

Was muss ich jetzt tun?
 
Zuletzt bearbeitet von einem Moderator:
beginner.126 schrieb:
Tue ich das, kommt folgender Dialog: "Nicht unterstützte 16 Bit-Anwendung
Dann hast Du ein 64bit-Windows und eine 16bit-DOS-Anwendung compiliert.
beginner.126 schrieb:
Wundere mich bloß, dass meine ersten beiden Programme umgewandelt werden konnten.
Ich kann Deinen Beschreibungen noch nicht so ganz folgen. Einen C-Quellcode kann man wie gesagt nicht ausführen. Was genau hast Du denn da 'umgewandelt'?
 
Incanus schrieb:
Ich kann Deinen Beschreibungen noch nicht so ganz folgen. Einen C-Quellcode kann man wie gesagt nicht ausführen. Was genau hast Du denn da 'umgewandelt'?
Ich habe zuersteinmal einen Quellcode in den Editor eingetippt. Anschließend habe ich daraus eine C-Datei erstellt und abgespeichert. Dann habe ich die cmd-Konsole aufgerufen, Zielverzeichnis ausgewählt, und den Namen meiner Datei eingegeben ohne das ".c" am Ende. Dann wurde das Programm ausgeführt.
 
Dann muss es aber schon eine ausführbare Datei gegeben haben, also 'Name Deiner Datei.exe'. Eine C-Datei ist reiner Quellcode, also Text.
 
Naja, ich habe Quellcode aus Beispielprogrammen aus dem Internet in einen Editor kopiert, wenn du das meinst.

Eigentlich will ich ja nur, dass es läuft.^^
 
Nein, das meine ich nicht. Ein Editor ist zunächst nur dafür da (Text)-Dateien zu bearbeiten. Das ist dann noch kein Programm. Eine für das jeweilige Betriebssystem ausführbare Datei macht dann der Compiler (genauer der Linker) daraus.

Also beschreibe bitte mal im Detail, wie Du vorgehst.
 
Hier fehlt das fundamentale Wissen von Dateiname, Dateiininhalt, Ausführung und Öffnen.
Lern das Ganze erstmal mit der Kommandozeile bevor du mit C-Programmierung weitermacst
 
  • Gefällt mir
Reaktionen: BeBur
Was spuckt denn der Befehl
Code:
g++ --version
in der Kommandozeile aus? Um ein eine C-Quelldatei zu übersehen muss diese mit
Code:
g++ -o noten noten.c
übersetzt werden. Da aber Achtung. Wenn weitere externe Bibliotheken in deinem Quelltext genutzt werden, müssen diese dem Linker bekannt gemacht werden. Dafür müssen dann die Optionen -L und -l genutzt werden, um die entsprechenden Bibliotheken zu binden.
 
Moin @beginner.126 ,
wenn du irgendwas von "laut Anleitung" schreibst. Schreibe doch bitte genau, welcher Anleitung du folgst. Im besten Fall als Link. Ebenso wenn du irgendwelche Dinge auf der Kommandozeile tust, je genauer du alles dokumentierts, desto besser kann die geholfen werden. Beispiel:

Code:
:~/tmp$ ls
prog.c
:~/tmp$ gcc prog.c
:~/tmp$ ls
prog.c    prog.a
:~/tmp$ ./ prog.a
Error: Blablub, ich bin eine Fehlermeldung

Und bitte Ausgaben aus dem Terminal in Code Blöcke setzen also in eckigen Klammern statt Spitzklammern <CODE>
bla blub
code
hier
</CODE>

Und der Quellcode der Programme an sich könnte auch helfen. Evtl auch sinnvoll eingekürzt. In deinem Fall also Header, Imports, Makors drinnen lassen und den produktiven Code an sich weglassen, der hat bei falsch gesetzten Targets eher keinen Einfluss.
 
Zuersteinmal möchte ich mich für die zahlreichen Antworten bedanken.
Ich habe mich bisher an diesem Buch gehalten: ISBN 978-3-8362-1420-9 . Ist schon etwas älter, von 2010. Dort ist auch ein in C geschriebenes Beispielprogramm abgedruckt, das ich (wie dort beschrieben) händisch in den Windows-Editor eingetippt habe.

@LencoX2 , das werde ich mir mal anschauen, danke.
 
Schau dir mal QT Creator an, damit sollte es problemlos gehen.
 
  • Gefällt mir
Reaktionen: kuddlmuddl
@beginner.126
Gut ein Buch, welches 10Jahre auf dem Buckel hat, kann erhebliche Diskrepanzen zu deutlich neuerer Software haben. In Zeiten wo WSL2 unter Windows zum Greifen nahe ist, ist es Imho nicht mehr all zu sinnvoll mit WinGW anzufangen[1].
Abgesehen davon, ok du hast uns eine ISBN gegeben, das nutzt im Zweifelsfall aber kaum Jemanden um deine Schritte nachzuvollziehen. Bitte mitdenken, wie hilfreich solche Angaben sind und ob es nicht schlauer ist wie beschrieben, deine Schritte transparent darlegen. Wie es geht wurde beschrieben.

@umask007 @whiper
Könnten wir bitte Anfängern dabei helfen
1. Gescheite Fehlerdokumentation zu (be-)schreiben
2. Die Fähigkeit vermitteln Probleme Ursächlich zu analysieren und zu beheben
3. NICHT Problemen auszuweichen indem noch ne Software, noch ne Abhängigkeit zu einer Bibliothek, ein weiteres Framework genutzt werden?



[1] Erklärung: WinGW portiert Linuxspezifika und Anwendungen nach Windows. Das ist mitunter sehr praktisch, da Microsoft aber mittlerweile mit WSL2 sehr einfach, sehr gut integrierte LinuxVMs bereitstellt, kann man auch direkt in einer echten Linuxumgebung arbeiten/programmieren. Außer du willst zwingend bei deinem Buch bleiben, da müsstest du dann viel Transferarbeit zwischen Buch und deiner Umgebung leisten.
 
  • Gefällt mir
Reaktionen: TomH22 und Gil'Galad
Gut, dann will ich mal versuchen, meine Anfänge in der Programmierung bis hierhin zu skizzieren:
Ich arbeite auf Windows 10.
1. Lade mir MinGW bei heise.de herunter.https://www.heise.de/download/product/mingw-3898
2. Installiere MinGW nach dieser Anleitung:https://www.ur.de/assets/physik/fak...lation-Programming-Environment/main-mingw.pdf
3. Schreibe nun diesen Code (der im genannten Buch abgedruckt ist) in den Editor:
C:
#include <stdio.h>
#include <stdlib.h>

int main() {
   char name[20];
   puts ("Hallo Welt!");
   printf ("Ihr Name, bitte: ");
   gets (name);
   printf ("Hallo %s!\n", name);
   return EXIT_SUCCESS;
}
4. Speichere die Datei als hallo.c ab und wechsle in die cmd-Konsole.
5. Stelle das Zielverzeichnis mit dem Befehl cd ein und gebe anschließend "hallo" ein.
6. Das Programm wird ausgeführt.

Nun versuche ich genau dasselbe mit anderen Codes aus dem Internet, wie diesen hier: https://www2.hs-fulda.de/~klingebiel/c-vorlesung/teil3/index.htm

Hier werden die Programme aber nicht ausgeführt, stattdessen kommt immer der Text: "Der Befehl x ist entweder falsch geschrieben, oder konnte nicht ausgeführt werden."
 
Dann gibt es irgendwo auf Deinem Rechner bereits eine ‚Hallo.exe‘, denn Du hast weder den installierten Compiler benutzt, noch ein Programm erstellt, sondern nur einen Text eingegeben, der noch lange kein ausführbares Programm ist.
 
beginner.126 schrieb:
4. Speichere die Datei als hallo.c ab und wechsle in die cmd-Konsole.
5. Stelle das Zielverzeichnis mit dem Befehl cd ein und gebe anschließend "hallo" ein.
6. Das Programm wird ausgeführt.
Bei der Eingabe von hallo wird implizit "hallo.exe" ausgeführt. Wenn du im jeweiligen Verzeichnis schaust (oder evtl. auch deinem Nutzerverzeichnis), wirst du die Datei wohl auch finden.
Jetzt erstellst du zwar eine Datei "noten.c", aber es gibt keine "noten.exe", die ausgeführt werden kann. Zwischen Punkt 4 und 5 hast du vergessen, sie zu kompilieren (Seite 14 deiner verlinkten Anleitung).
 
Zuletzt bearbeitet:
Zurück
Oben