Frage:
So kompilieren Sie C-Dateien im Terminal
xxmbabanexx
2013-03-25 11:06:53 UTC
view on stackexchange narkive permalink

Frage

Kann mir bitte jemand sagen, wie ich über die Befehlszeile klar und präzise kompilieren kann? Vorzugsweise werden meine Programme in einem echten Texteditor (z. B. einem Blattblock) geschrieben.

Hintergrund

Ich bin ein vollständiger n00b, wenn es darum geht Linux, C und der Raspberry Pi. Die drei haben sich also zu einem perfekten Sturm zusammengeschlossen, um anzugreifen!

Ich habe eine C-Datei mit dem Namen main.c in einem Ordner erstellt. Das Verzeichnis lautet:

  / home / pi / Desktop / Datenbank / main.c  

Der C -Code ist a einfaches Hello World-Programm - ich muss es hier nicht erklären. Also habe ich mich natürlich entschlossen, meinen C-Code zu kompilieren, und hier komme ich zu einem Verlust. Ich tippe

  gcc -o hallo main.c  

ein, wie in diesem Tutorial beschrieben, aber ich komme zu einem Fehler :

  gcc: error: main.c: Keine solche Datei oder kein solches Verzeichnis  

Als ich das nano Zeug gemacht habe, habe ich kam zu einem seltsamen Fenster, aber ich wusste nicht, wie ich das, was ich schrieb, speichern sollte.

Vielen Dank - das hat mich sehr nervt.

Perfekter Sturm ist richtig, lol. Der Save on Nano ist "Strg-O", aber Sie werden auch aufgefordert, zu speichern, wenn Sie über "Strg-X" beenden. Erfahren Sie, wie Sie die Befehle `ls` und` stat` zum Lesen von Verzeichnisinhalten verwenden, möglicherweise auch` pwd` und` cd`, da Sie möglicherweise verwirrt sind, wo Sie sich befinden.
Nano ist der am einfachsten zu verwendende Terminal-Texteditor. Es gibt vi oder vim oder Emacs, aber ihre Verwendung ist etwas schwierig. Eines Tages musst du sie lernen. Aber in der Zwischenzeit ist Nano ziemlich geradlinig. Die wichtigsten Befehle sind unten im Fenster aufgeführt. Stattdessen wird bei gedrückter Strg-Taste ein '^' angezeigt. ^ C bedeutet Strg-C zum Abbrechen, ^ x bedeutet Strg-X zum Beenden und so weiter.
Beachten Sie außerdem, dass Leerzeichen in Verzeichnis- und Dateinamen vermieden werden sollten. Sie können stattdessen Kamelbuchstaben oder Unterstriche / Bindestriche verwenden.
Drei antworten:
#1
+14
Diti
2013-03-28 01:55:40 UTC
view on stackexchange narkive permalink

Verwenden Sie NICHT nano (oder einen anderen Texteditor, in den Sie Ihren Code einfügen) mit Root- / sudo-Berechtigungen (dh bearbeiten Sie nicht mit sudo nano , verwenden Sie nano ) nur, wenn Sie nur persönliche Dinge tun, für die keine Superuser-Berechtigungen erforderlich sind.

Antwort

Kompilieren über die Befehlszeile (vorausgesetzt, yourcode.c ist der Name Ihrer C-Datei und program der Name des resultierenden Programms nach der Kompilierung):

  1. Schreiben Sie Ihren Code in Ihren bevorzugten Editor:

    • Geben Sie im Terminal nano yourcode.c ein (vorausgesetzt, Sie möchten verwenden nano);
    • Oder verwenden Sie Ihren Leafpad-Editor (und stellen Sie sicher, dass Sie wissen , wo Ihre Datei gespeichert ist).
  2. Navigieren Sie zurück zum Terminal zu dem Speicherort Ihrer C-Datei. (Erinnerung: ls zum Auflisten des Verzeichnisinhalts, cd zum Wechseln des Verzeichnisses.)

  3. Kompilieren Sie Ihren Code mit gcc -o Programm yourcode.c c ode>.

  4. Führen Sie es mit ./program aus. Fertig!

  5. ol>

    Bonusmethode

    Wenn Sie beabsichtigen, Ihr Programm häufig zu kompilieren / auszuführen, können Sie sich Zeit sparen, indem Sie einen schreiben Makefile . Erstellen Sie diese Datei mit Leafpad (oder im Terminal nano Makefile ) und schreiben Sie dann:

      all: gcc -o program yourcode.c ./program 

    (Stellen Sie sicher, dass Sie derzeit die Registerkarte kbd> für Einrückungen und nicht für Leerzeichen verwenden.) Jedes Mal, wenn Sie make in das Terminal eingeben (oder make all , aber lassen Sie uns die Dinge kurz halten!), Ihr Programm wird kompiliert und ausgeführt.


    Testen

    Sie möchten sicherstellen, dass Ihre GCC-Installation funktioniert ? Kopieren Sie Folgendes in Ihr Terminal:

      cd / tmpcat <<EOF > main.c # include <stdio.h>int main () {printf ("Hello World \ n"); return 0;} EOFgcc -o hallo main.c./hello # Drücken Sie die Eingabetaste, um Ihr Programm auszuführen
     

    Wenn "Hello World" angezeigt wird, können Sie loslegen.

Dies ist ein wirklich tolles Tutorial und verdient viel mehr Upvotes.
#2
+4
xxmbabanexx
2013-03-25 11:18:27 UTC
view on stackexchange narkive permalink

Das Kompilieren von C-Programmen auf dem Himbeer-Pi ist ziemlich einfach. Erstellen Sie Ihr Programm zunächst in einem Texteditor und speichern Sie es als <insert name>.c Es sollte auf dem Desktop gespeichert werden.

Öffnen Sie anschließend das Terminal. Geben Sie darin Folgendes ein:

  cd Desktop  

Dadurch wird das Verzeichnis, in dem sich das Terminal befindet, in Desktop geändert. Hier wird auch unser Programm gespeichert.

  gcc -Wall <myName>.c -o <compiled name>  

Hier treten die interessanten Dinge auf. GCC ist der Compiler - er macht Ihren Code ausführbar. -Wall aktiviert Compiler-Warnungen - dies ist äußerst hilfreich beim Debuggen. Die nächste Zeile <myName>.c teilt dem Computer mit, wo der Code gespeichert ist. -o ist eine Option - es weist GCC an, zu kompilieren. Schließlich ist <compiled name> der Name Ihres neuen Programms.

+1, wenn Sie "-Wall" hinzufügen. Wenn Sie ein Terminal standardmäßig öffnen, befinden Sie sich in $ HOME und nicht in $ HOME / Desktop, und die meisten Dinge speichern nichts auf dem Desktop (es gibt möglicherweise einige, die dies tun, aber es ist falsch zu implizieren, dass im Allgemeinen ein Texteditor speichert eine Datei auf ~ / Desktop. Ich habe noch nie etwas gesehen, das eine Datei dort abgelegt hat, und ich benutze Linux schon lange.)
Um es weiter zu erklären: Ich glaube, ~ / Desktop wird von Fenstermanagern verwendet, die das Ziehen und Ablegen von Dateien im Stammfenster ermöglichen. Das ist alles.
@goldilocks Ich habe `-Wall` hinzugefügt
@goldilocks: warum -Wall hinzufügen? Das kann für Anfänger beängstigend sein, wenn Sie ihnen nicht sagen, warum sie plötzlich mehr Fehler haben.
: / Punkt gemacht, um es zu erklären, denke ich. Aber sie sollten verwenden, wenn sie noch nicht sind, egal wie neu sie sind. Je früher, desto besser und am besten = jedes Mal einschließlich des ersten. Oder denkst du vielleicht, sie sollten ein paar Jahre warten? Ich würde auch `-Wextra` empfehlen, obwohl es Dinge enthält, die für Anfänger besonders irritierend sein könnten. w / C ++ (nämlich nicht verwendete Parameter in Unterklassenmethoden). Es gibt keine solche Entschuldigung für "-Wall", es sei denn, Sie sind wirklich fest entschlossen, so wenig Klammern wie möglich zu verwenden.
@Jacobm001 Ich zeichne die Linie bei `-Wpedantic` ...
@goldilocks: Ich bin alles für die Verwendung von -Wall, aber da die meisten Tutorials es nicht verwenden und Bücher oft weniger als ideale Praktiken fördern, vermeide ich es an solchen Stellen. Wenn es hier einem Benutzer gegeben wird, muss es meiner Meinung nach mit einem Haftungsausschluss versehen sein.
Eigentlich habe ich gerade bemerkt, dass es in der Antwort \ O / IMO eine Erklärung für "-Wand" gibt. Sie tun niemandem einen Gefallen, indem Sie es versäumen, ihnen von Warnungen zu erzählen, die die Chance haben. In allen Sprachen / Compilern / Interpreten, die ich jemals verwendet habe, ist die Basisebene (z. B. "-Wall") mit Fehlern in dem Sinne vergleichbar, dass sie niemals mehrdeutig oder unvermeidbar sind. ausnahmslos richtig geschriebener Code in C kann / wird `-Wall` passieren. In diesem Fall macht es keinen Sinn, es nicht zu verwenden oder jemanden zu erziehen, ohne Grund schlechten Code zu schreiben. Du bist besser dran, von Anfang an zu lernen, Dinge richtig zu machen.
#3
-3
Sam
2016-01-09 07:18:07 UTC
view on stackexchange narkive permalink

Ihr Fehler "Nicht gefunden" wird dadurch verursacht, dass kein ./ vor Ihnen steht. Also:

gcc -o ./hello ./main.c

Es wäre hilfreich, wenn Sie erklären würden, was dies bewirkt und wie Sie neu sind. Dies war das Problem.
Könnte man auch eine Code-Formatierung hinzufügen, um die Beispiellösung vom Text zu unterscheiden? Willkommen bei SE RPi - bitte nehmen Sie sich etwas Zeit, um sich die [Tour] (http://raspberrypi.stackexchange.com/tour) anzusehen und die Antworten anderer Leute anzusehen, um eine gute Vorstellung davon zu bekommen, was sie ausmacht eine vollständige Antwort.
Das `. /` Wäre nicht nötig.


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...