Wie man ein C-Programm unter Mac OS X kompiliert und ausführt

Lesezeit: 3 Minuten

Benutzeravatar von JT9
JT9

Ich lerne C und möchte das Programm mit einem Texteditor auf meinem Mac schreiben (läuft OS X v10.7 (Löwe)).

Ich schreibe die .c Datei, und kompilieren Sie sie mit gcc filename.c – die ausführbare Datei namens erstellt a.out. Allerdings, wenn ich tippe a.out oder /a.outbekomme ich folgende Meldungen:

-bash: a.out: Befehl nicht gefundenor-bash: /a.out:
Datei oder Verzeichnis existiert nicht

Ich habe C-Programme auf Linux-Systemen erfolgreich kompiliert und ausgeführt, bevor ich dieselbe Methode verwendet habe. Was mache ich falsch auf meinem Mac?

  • Die kanonische Frage ist Wie kann ich C/C++-Code in einer Unix-Konsole oder einem Mac-Terminal kompilieren und ausführen?.

    – Peter Mortensen

    8. Mai um 13:45 Uhr

Sie müssen einen Punkt hinzufügen, um anzuzeigen, dass sich die ausführbare Datei im aktuellen Verzeichnis befindet, da sich das aktuelle Verzeichnis nicht im Pfad befindet:

./a.out

  • @JTWheeler, Sie könnten auch in Betracht ziehen, Ihre Objektdatei zu benennen, da dies verhindern würde, dass a.out überschrieben wird, wenn mehrere C-Programme manuell im selben Verzeichnis kompiliert werden. Tun gcc myprog1.c -o myprog1.o und führen Sie es aus, indem Sie es tun ./myprog1.o. Nur ein Vorschlag. Alternativ können Sie clang anstelle von gcc für Ihren Übungscode verwenden, da dies bessere Fehlerdetails liefert.

    – Bharat

    15. Dezember 2012 um 0:08 Uhr


Benutzeravatar von beckah
Beckah

Sie müssen vorangehen a.out mit ./ folgendermaßen:

./a.out

Darüber hinaus kann es nützlich sein, den Namen der resultierenden ausführbaren Datei zu ändern. Beispiel:

gcc nameofprogramyouwrote.c -o whatyouwanttheprogramtobenamed

…dann führe es so aus:

./whatyouwanttheprogramtobenamed

Sie müssen einen Punkt vor dem Schrägstrich hinzufügen:

./a.out

/a.out würde versuchen, ein Programm im Stammverzeichnis auszuführen (/).
a.out sucht Ihr Programm in allen Ordnern, die in der Umgebungsvariable PATH definiert sind.

Ich habe C-Programme auf Linux-Systemen erfolgreich kompiliert und ausgeführt, bevor ich dieselbe Methode verwendet habe. Was mache ich falsch auf meinem Mac?

Unter Linux müssen Sie dasselbe tun.

Bauen:

    gcc -Wall -o yourFile yourFile.c

Dann zur Ausführung:

    ./yourFile

Benutzeravatar von MichaelM
MichaelM

Stellen Sie sicher, dass Sie Ihre Berechtigungen für die ausführbare Datei festlegen chmod +x a.out.

  • gcc erledigt das für Sie … Sie müssen chmod nicht ausführen

    – Benjamin

    15. Dezember 2012 um 0:10 Uhr

  • Richtig, aber das ist eine bewährte Vorgehensweise, da nicht jeder gcc verwendet.

    – MichaelM

    15. Dezember 2012 um 0:27 Uhr

  • Ist das anders als chmod 777 a.out?

    – Lukas

    11. Juni 2020 um 13:03 Uhr

  • Ja, chmod 777 wird für jeden mit Zugriff auf das System ausführbar, lesbar, beschreibbar und löschbar machen.

    – MichaelM

    12. Juni 2020 um 14:07 Uhr


  • chmod 777. chmod 755 oder chmod 744 vielleicht näher, aber u+x ist besser

    – Peter Mortensen

    10. Mai um 21:37 Uhr


Benutzeravatar von Peter Mortensen
Peter Mortensen

Sie benötigen einen Compiler. Der einfachste Weg ist jedoch die Installation von Xcode. Auf diese Weise erhalten Sie Zugriff auf GCC.

Daher,

gcc -o mybinaryfile mysourcefile.c

Dann führe es so aus.

./mybinaryfile

  • gcc erledigt das für Sie … Sie müssen chmod nicht ausführen

    – Benjamin

    15. Dezember 2012 um 0:10 Uhr

  • Richtig, aber das ist eine bewährte Vorgehensweise, da nicht jeder gcc verwendet.

    – MichaelM

    15. Dezember 2012 um 0:27 Uhr

  • Ist das anders als chmod 777 a.out?

    – Lukas

    11. Juni 2020 um 13:03 Uhr

  • Ja, chmod 777 wird für jeden mit Zugriff auf das System ausführbar, lesbar, beschreibbar und löschbar machen.

    – MichaelM

    12. Juni 2020 um 14:07 Uhr


  • chmod 777. chmod 755 oder chmod 744 vielleicht näher, aber u+x ist besser

    – Peter Mortensen

    10. Mai um 21:37 Uhr


1390100cookie-checkWie man ein C-Programm unter Mac OS X kompiliert und ausführt

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy