2009-06-18 17 views
14

Ich bin in einem Master-Informatik-Kurs eingeschrieben. Der Kurs verwendet C und der Kursleiter möchte, dass wir Cygwin verwenden, um Programme zu kompilieren, wenn wir Windows verwenden.Verwenden von Cygwin zum Kompilieren eines C-Programms; Ausführungsfehler

Ich habe Cygwin heruntergeladen und installiert und ich habe sichergestellt, dass ich die GCC compiler installiert habe.

Aber ich weiß nicht wohin von hier zu gehen. Ich muss eine einzelne Quelldatei kompilieren, die ein grundlegendes Include hat.

#include <stdio.h> 

Nehmen wir an, die Datei ist auf meinem Desktop (es ist nicht, aber aus Gründen des Arguments). Wie navigiere ich von der Bash-Shell zum Desktop? Ich gehe davon aus einmal habe ich an die richtige Stelle in der Bash navigiert, habe ich einfach ausführen:

gcc myProgram.c -o myProgram 

aktualisieren: Nach verschiedenen Anweisungen unten geschrieben, ich war in der Lage, das Programm zu kompilieren; Ich danke dir dafür. Aber wenn ich die resultierende Binärdatei ausführe, bekomme ich Folgendes. Wie kann ich dieses Programm kompilieren oder ausführen, damit ich den Fehler nicht erhalte? Nochmals vielen Dank.

This application has failed to start because cygwin1.dll was not found. Re-installing the application may fix this problem.

+0

Anstatt auf cygwin1.dll zu verlinken, können Sie einfach "--mno-cygwin" an GCC übergeben, wenn Sie kompilieren (http://www.delorie.com/howto/cygwin/mno-cygwin-howto) .html). –

+3

Nur für jeden, der die kompilierte Anwendung auch nicht ausführen konnte, verwenden Sie '$./MyProgram' und nicht nur' $ myProgram'. – Paul

+0

Macht es Ihnen etwas aus, das Bild zu aktualisieren, das anscheinend nicht funktioniert. – William

Antwort

14

Wenn Sie in cygwin starten, befinden Sie sich in Ihrem $ HOME, wie bei Unix, das standardmäßig c:/cygwin/home/$ YOURNAME zugeordnet ist. Du könntest also alles dort hinstellen.

Sie können auch auf das c: Laufwerk von Cygwin bis/cygdrive/c/zugreifen (z. B./cygdrive/c/Dokumente und Einstellungen/IhrName/Desktop).

+0

Diese Lösung ist diejenige, die ich verwendet habe. Ich konnte alles (von der Quellcodeverwaltung) in mein $ HOME setzen und es funktionierte wie ein Zauber. Es ist sogar leicht zu erreichen. Vielen Dank! –

1

Windows-Pfad C:\src unter Cygwin wird /cygdrive/c/src

0

Ihr C-Programm kompilieren Cygwin

Wir werden die gcc-Compiler auf Cygwin verwenden Programme zu kompilieren.

1) Starten Sie Cygwin

2) Wechseln Sie in das Verzeichnis, das Sie für diese Klasse erstellt, indem Sie

cd c:/windows/Desktop

3) Kompilieren Sie das Programm, indem Sie

gcc myProgram.c -o myProgram

Der Befehl gcc ruft den gcc-Compiler auf, um Ihr C-Programm zu kompilieren.

0

Sie könnten besser eine Datei in cygwin Shell bearbeiten. Normalerweise hat es ein Standardbenutzerverzeichnis, wenn Sie es starten.Sie können eine Datei von der Shell aus bearbeiten, indem Sie etwas wie "vi somefile.c" oder "emacs somefile.c" machen. Vorausgesetzt, dass vi oder emacs in cygwin installiert sind.

Wenn Sie auf Ihrem Desktop ablegen wollen, müssen Sie zu einem ähnlichen Pfad (unter XP) zu "/ cygwindrive/c/Documents \ und \ Settings/Frank/Desktop" gehen (Wenn der Speicher ordnungsgemäß funktioniert) . Wechseln Sie einfach zu diesem Pfad, und führen Sie Ihren Befehl für die Datei aus.

0

Cygwin ist sehr cool! Sie können Programme von anderen Systemen (z. B. Linux) kompilieren, und sie funktionieren. Ich spreche sogar Kommunikationsprogramme oder Web-Server.

Hier ist ein Trick. Wenn Sie Ihre Datei im Windows-Datei-Explorer betrachten, können Sie "cd" in Ihre Bash-Fenster eingeben und dann aus der Explorer-Adressleiste in das Cygwin-Fenster ziehen, und der vollständige Pfad wird kopiert! Dies funktioniert übrigens auch in der Windows-Kommando-Shell.

Auch: Während "cd/cygdrive/c" der formale Pfad ist, wird auch "cd c:" als Abkürzung akzeptiert. Möglicherweise müssen Sie dies tun, bevor Sie den Rest des Pfades ziehen.

Die Datei stdio.h sollte wie bei einem herkömmlichen System automatisch gefunden werden.

2

Wenn Sie nicht mit bash vertraut sind, können Sie weiterhin in einer Standard-Windows-Befehl (d. H. DOS) Shell arbeiten.

Damit dies funktioniert, müssen Sie der Windows PATH-Variablen C: \ cygwin \ bin (oder Ihre lokale Alternative) hinzufügen.

Mit dies getan, können Sie: 1) Öffnen Sie einen Befehl (DOS) Shell 2) Ändern Sie das Verzeichnis auf den Speicherort des Codes (c :, dann \ cd Pfaddatei) 3) gcc MyProgram \ .c -o myProgram

Wie in Niks Antwort erwähnt, ist die Dokumentation "Using Cygwin" ein großartiger Ort, um mehr zu erfahren.

4

einfach zusammenfassen, sind hier einige Befehle, die in einem Verzeichnis navigieren und kompilieren Code Cygwin und Windows Vista:

  1. eine Shell Cygwin starten.
  2. an der Eingabeaufforderung verwenden cd in das entsprechende Verzeichnis zu wechseln:

    $ cd/cygdrive/c/Users/nate/Desktop

  3. Verwenden ls die Dateien im Verzeichnis aufgelistet:

    $ ls

    prog.c

  4. Verwenden Sie die gcc Befehl, um eine Datei in diesem Verzeichnis zu kompilieren:

    gcc $ prog.c -o prog

  5. Wenn Sie keine Fehler sehen, sollten Sie in der Lage sein, das erhaltene Programm auszuführen:

    $./ Prog

Update:

Für die "Cygwin1.dll not found" Fehler, wie ich Nik Antwort. Sie können auch this related post about cygwin1.dll not found auschecken, was das Hinzufügen von c:\cygwin\bin\ zu Ihrem Windows PATH vorschlägt.

Es gibt instructions on how to change the Windows PATH variable für Windows XP, und auf Vista denke ich, dass es ähnlich ist.

  1. Go Systemsteuerung -> System
  2. Select Erweiterte Systemeinstellungen
  3. Klicken Sie auf das Erweiterte Registerkarte
  4. Klicken Sie auf Umgebungsvariablen
  5. Unter Systemvariablen, finden Sie den Pfad Eintrag und klicken Sie bearbeiten
  6. c:\cygwin\bin zur Liste hinzufügen, sicherstellen, dass es von allen vorherigen Artikel mit einem Semikolon über die cygwin1.dll fehlt
+0

Das Programm wird den oben angegebenen Fehler geben. –

+0

Wird der Pfad geändert, entweder in der Shell oder über die Windows Systemsteuerung? –

9

In Bezug auf Ihre Frage aktualisiert zu trennen.

Von der Cygwin-Terminal zu überprüfen,

ls /usr/bin/cygwin1.dll 

Wenn es nicht vorhanden ist (ich bezweifle, dass), ist die Installation nicht richtig gemacht.

Dann überprüfen Sie Ihren Weg mit,

echo $PATH 

Gehwege bringen diese : getrennte Liste. Es muss /usr/bin enthalten. Wenn Sie feststellen, dass mit, schließlich

export PATH=/usr/bin:$PATH 

hinzuzufügen fehlt,

  • Ich hoffe, Sie Cygwin aus dem Cygwin-Terminal (dem kleinen grünen + schwarz Symbol installiert mit Cygwin) verwenden, oder MinTTY (wenn du hast das installiert).
  • Und Sie haben die kompilierte EXE nicht auf eine andere Maschine verschoben, die Cygwin nicht installiert hat (wenn Sie das tun, müssen Sie die cygwin1.dll zu dieser Maschine tragen - halten Sie sie im selben Ordner wie die kompilierte EXE).
4

In Bezug auf die cygwin1.dll Fehler nicht gefunden, eine Lösung, die ich für mindestens 8 Jahre verwendet habe, ist die Cygwin sind Verzeichnisse Ende meiner %PATH% in meinem Computer hinzufügen -> Eigenschaften -> Erweitert -> Umgebungsvariablen. Ich füge sie am Ende des Pfades hinzu, so dass sie bei meiner normalen Arbeit zuletzt durchsucht werden, wodurch die Möglichkeit von Konflikten minimiert wird (tatsächlich hatte ich während dieser ganzen Zeit keine Probleme mit Konflikten).

Wenn Sie die Cygwin Bash Shell aufrufen, werden diese Verzeichnisse der %PATH% vorangestellt, so dass alles auch in dieser Umgebung funktioniert.

Wenn nicht in Cygwin Shell läuft, mein %PATH% ist:

Path=c:\opt\perl\bin; \ 
    ... 
    C:\opt\cygwin\bin; \ 
    C:\opt\cygwin\usr\bin; \ 
    C:\opt\cygwin\usr\local\bin; 

Auf diese Weise zum Beispiel Activestate Perl perl zuerst gefunden wird, wenn ich bin nicht in der Cygwin Shell, aber die Cygwin perl gefunden wird, wenn Ich arbeite in der Cygwin Shell.

1

Wenn Sie nur gcc program.c -o Programm -mno-cygwin tun, wird es gut kompilieren und Sie müssen nicht cygwin1.dll zu Ihrem Pfad hinzufügen, und Sie können einfach weitermachen und Ihre ausführbare Datei an eine verteilen Computer, auf dem Cygwin nicht installiert ist und der weiterhin ausgeführt wird. Hoffe, das hilft

Verwandte Themen