Domanda:
Come compilare i file C nel terminale
xxmbabanexx
2013-03-25 11:06:53 UTC
view on stackexchange narkive permalink

Qualcuno può dirmi come compilare dalla riga di comando in modo chiaro e conciso. Preferibilmente, i miei programmi saranno scritti in un vero editor di testo (come il foglio illustrativo).

Sfondo

Sono un completo n00b quando si tratta di Linux, C e Raspberry Pi. Quindi, i tre si sono riuniti in una tempesta perfetta per attaccare!

Ho creato un file C chiamato main.c in una cartella. La directory è:

  / home / pi / Desktop / Data Base / main.c  

Il codice C è un semplice programma Hello World - non ho bisogno di spiegarlo qui. Quindi, ho naturalmente deciso di compilare il mio codice C, ed è qui che vengo in perdita. Digito

  gcc -o hello main.c  

come spiegato in questo tutorial, ma arrivo a un errore :

  gcc: error: main.c: Nessun file o directory  

Quando ho fatto le cose nano , ho arrivò a una strana finestra, ma non sapevo come salvare ciò che avevo scritto.

Grazie mille, questo mi ha infastidito enormemente.

La tempesta perfetta è giusta, lol. Il salvataggio su nano è `ctrl-o`, ma ti chiede anche di salvare quando esci tramite` ctrl-x`. Impara a usare i comandi `ls` e` stat` per leggere i contenuti delle directory, forse anche `pwd` e` cd`, perché potresti essere confuso su dove ti trovi.
Nano è l'editor di testo del terminale più semplice da usare. C'è vi o vim o emacs ma il loro uso è un po 'complicato. Un giorno dovrai impararli. Ma nel frattempo nano è piuttosto diretto. I comandi più importanti sono elencati nella parte inferiore della finestra, invece del tasto "ctrl" vedrai un carattere '^', quindi ^ c significa ctrl-C per annullare, ^ x significa ctrl-x per uscire e così via.
Un'altra cosa da notare è che gli spazi nei nomi di directory e file dovrebbero essere evitati. Puoi invece usare le maiuscole o le minuscole / trattini.
Tre risposte:
#1
+14
Diti
2013-03-28 01:55:40 UTC
view on stackexchange narkive permalink

NON utilizzare nano (o un altro editor di testo in cui inserire il codice) con i permessi di root / sudo (cioè non modificare con sudo nano , usa solo nano ) se tutto ciò che stai facendo sono cose personali che non richiedono i permessi di superutente.

Rispondi

Per compilare dalla riga di comando (supponendo che yourcode.c sia il nome del file C e program il nome del programma risultante dopo la compilazione):

  1. Scrivi il tuo codice nel tuo editor preferito:

    • Nel terminale, digita nano yourcode.c (supponendo che tu voglia usare nano);
    • Oppure usa il tuo editor di Leafpad (e assicurati di sapere dove è salvato il tuo file).
  2. Torna al terminale, vai alla posizione in cui è memorizzato il tuo file C. (Promemoria: ls per elencare il contenuto della directory, cd per cambiare directory.)

  3. Compila il tuo codice con gcc -o program yourcode.c c ode>.

  4. Eseguilo con ./program . Fatto!

Metodo bonus

Se hai intenzione di compilare / eseguire il tuo programma abbastanza spesso, puoi risparmiare tempo scrivendo un Makefile . Crea questo file con Leafpad (o, nel terminale, nano Makefile ), quindi scrivi:

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

(Assicurati di utilizzare attualmente Tab per i rientri e non per gli spazi.) Quindi ogni volta che digiti make nel terminale (o crea tutto , ma manteniamo le cose brevi!), il tuo programma verrà compilato ed eseguito.


Test

Vuoi assicurarti che la tua installazione di GCC funzioni ? Copia e incolla quanto segue sul tuo terminale:

  cd / tmpcat <<EOF > main.c # include <stdio.h>int main () {printf ("Hello World \ n"); return 0;} EOFgcc -o ciao main.c./ ciao # Premi Invio per eseguire il programma

Se fa eco a "Hello World", allora sei a posto.

Questo è davvero un ottimo tutorial e merita molti più voti positivi.
#2
+4
xxmbabanexx
2013-03-25 11:18:27 UTC
view on stackexchange narkive permalink

Compilare programmi in C sul raspberry pi è piuttosto semplice. Per prima cosa, crea il tuo programma in un editor di testo e salvalo come <insert name>.c Dovrebbe essere salvato sul desktop.

Quindi, apri il terminale. In esso digita:

  cd Desktop  

Questo cambia la directory che il terminale sta guardando in Desktop. Questo è anche il luogo in cui è memorizzato il nostro programma.

  gcc -Wall <myName>.c -o < nome compilato>  

Qui è dove si verificano le cose interessanti. GCC è il compilatore: rende il tuo codice eseguibile. -Wall attiva gli avvisi del compilatore - questo è estremamente utile per il debug. La riga successiva <myName>.c indica al computer dove è memorizzato il codice. -o è un'opzione - dice a GCC di compilare. Infine, <compiled name> è il nome del tuo nuovo programma.

+1 se aggiungi "-Wall" a questo. L'apertura di un terminale per impostazione predefinita ti mette in $ HOME, non in "$ HOME / Desktop", e la maggior parte delle cose non salva nulla sul desktop (potrebbero essercene alcune, ma è falso implicare che in generale un editor di testo salva un file in ~ / Desktop. In realtà non ho mai visto niente mettere un file lì, e uso Linux da molto tempo.)
Per spiegare ulteriormente: credo che ~ / Desktop sia utilizzato dai gestori di finestre che consentono il trascinamento dei file nella finestra principale. È tutto.
@goldilocks Ho aggiunto "-Wall"
@goldilocks: perché aggiungere -Wall? Può essere un po 'una cosa spaventosa per i principianti se non dici loro perché improvvisamente hanno un mucchio di errori in più.
: / Punto preso per spiegarlo, immagino. Ma dovrebbero essere usati se non lo sono ancora, non importa quanto siano nuovi. Prima, meglio è e meglio = ogni volta, inclusa la prima. O forse pensi che dovrebbero aspettare qualche anno? Consiglierei anche "-Wextra", sebbene includa cose che potrebbero essere un po 'irritanti per i principianti, specialmente. w / C ++ (vale a dire parametri inutilizzati nei metodi di sottoclasse). Non ci sono scuse del genere per `-Wall` a meno che tu non sia davvero determinato a usare il minor numero di parentesi possibile.
@Jacobm001 Traccio la linea su `-Wpedantic` ...
@goldilocks: Sono favorevole all'utilizzo di -Wall, ma poiché la maggior parte dei tutorial non lo usa e i libri spesso incoraggiano pratiche meno che ideali, lo evito in posti come questo. Se viene fornito a un utente qui, penso solo che debba essere accompagnato da una dichiarazione di non responsabilità.
In realtà ho appena notato che c'è una spiegazione di `-Wall` nella risposta \ O / IMO che non stai mai facendo un favore a nessuno trascurando di dire loro gli avvertimenti che se ne hanno. In tutti i linguaggi / compilatori / interpreti che abbia mai usato il livello base (es. `-Wall`) è simile agli errori nel senso che non sono mai ambigui o inevitabili; senza eccezioni, il codice scritto correttamente in C può / passerà `-Wall`. Stando così le cose, non ha senso non usarlo o istruire qualcuno a scrivere codice errato senza motivo. È meglio imparare a fare le cose fin dall'inizio.
#3
-3
Sam
2016-01-09 07:18:07 UTC
view on stackexchange narkive permalink

Il tuo errore "Non trovato" è causato dall'assenza di ./ davanti. Quindi:

gcc -o ./hello ./main.c

sarebbe utile se tu spiegassi cosa fa e come hai scoperto che questo era il problema.
Potrebbe usare anche aggiungere un po 'di formattazione del codice, per differenziare la soluzione di esempio dal testo? Tuttavia, benvenuto in SE RPi - per favore dedica un po 'di tempo a dare un'occhiata al [tour] (http://raspberrypi.stackexchange.com/tour) e dai un'occhiata alle risposte di altre persone per avere una buona idea di ciò che costituisce una risposta completa.
Il ". /" Non sarebbe necessario.


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...