Come compilare ed eseguire C / C ++ in una console Unix / terminale Mac?
Domanda
Come posso compilare / eseguire C o C ++ nella console Unix o in un terminale Mac?
(Lo so, dimenticalo e riapprendilo di nuovo. È tempo di scriverlo.)
Soluzione
Se si tratta di un semplice programma a sorgente singolo:
make foo
dove il file sorgente è foo.c o foo.cpp, ecc.
Non hai nemmeno bisogno di un makefile. Make ha abbastanza regole integrate per creare il tuo file sorgente in un eseguibile con lo stesso nome, meno l'estensione.
L'esecuzione dell'eseguibile appena creato equivale all'esecuzione di qualsiasi programma, ma molto spesso sarà necessario specificare il percorso dell'eseguibile poiché la shell cercherà solo ciò che è in $ PATH
per trovare gli eseguibili e molto spesso non include la directory corrente (.
).
Quindi, per eseguire l'eseguibile incorporato foo
:
./foo
Altri suggerimenti
gcc main.cpp -o main.out
./main.out
Questo è il comando che funziona su tutte le macchine Unix ... Lo uso su Linux / Ubuntu, ma funziona anche su OS & nbsp; X. Digita il seguente comando in Terminal.app .
$ g++ -o lab21 iterative.cpp
-o
è la lettera O non zero
lab21
sarà il tuo file eseguibile
iterative.cpp
è il tuo file c ++
Dopo aver eseguito quel comando, digitare quanto segue nel terminale per eseguire il programma:
$ ./lab21
Due passi per me:
prima
make foo
quindi:
./foo
Tutta l'esecuzione dell'applicazione in un ambiente Unix (Linux, Mac & nbsp; OS & nbsp; X, AIX, ecc.) dipende dal percorso di ricerca eseguibile.
È possibile visualizzare questo percorso nel terminale con questo comando:
echo $ PATH
Su Mac OS X (per impostazione predefinita) verrà visualizzato il seguente percorso di ricerca separato da due punti:
/ usr / bin: / bin: / usr / sbin: / sbin: / usr / local / bin: / usr / X11 / bin
Quindi qualsiasi eseguibile nelle directory elencate può essere eseguito semplicemente digitando il loro nome. Ad esempio:
cat mytextfile.txt
Esegue / bin / cat
e visualizza mytextfile.txt sul terminale.
Per eseguire qualsiasi altro comando che non si trova nel percorso di ricerca dell'eseguibile, è necessario qualificare il percorso dell'eseguibile. Quindi supponiamo di avere un eseguibile chiamato MyProgram nella mia home directory su Mac & nbsp; OS & nbsp; X Posso qualificarlo completamente in questo modo:
/ Users / Oliver / MyProgram
Se ti trovi in ??una posizione vicina al programma che desideri eseguire, puoi qualificare il nome con un percorso parziale. Ad esempio, se MyProgram
era nella directory / Users / oliver / MyProject
io e io eravamo nella mia home directory posso qualificare il nome dell'eseguibile come questo e farlo eseguire :
MyProject / MyProgram
O dire che ero nella directory / Users / oliver / MyProject2
e volevo eseguire / Users / oliver / MyProject / MyProgram
posso usare un percorso relativo come questo, per eseguirlo:
../ MyProject / MyProgram
Allo stesso modo se mi trovo nella stessa directory di MyProgram
ho bisogno di usare una " directory corrente " percorso relativo. La directory corrente in cui ti trovi è il carattere punto seguito da una barra. Ad esempio:
./ MyProgram
Per determinare la directory in cui ci si trova attualmente, utilizzare il comando pwd
.
Se stai comunemente mettendo dei programmi in un posto sul tuo disco rigido che desideri eseguire senza dover qualificare i loro nomi. Ad esempio, se hai un " bin " nella directory home per gli script shell utilizzati regolarmente di altri programmi, potrebbe essere saggio modificare il percorso di ricerca eseguibile.
Questo può essere fatto facilmente creando o modificando il file .bash_profile
esistente nella tua home directory e aggiungendo le righe:
#!/bin/sh
export PATH=$PATH:~/bin
Qui il carattere tilde (~) viene utilizzato come scorciatoia per / Users / oliver. Si noti inoltre che la riga hash bang (#!) Deve essere la prima riga del file (se non esiste già). Nota anche che questa tecnica richiede che la shell di accesso sia bash (impostazione predefinita su Mac & nbsp; OS & nbsp; X e la maggior parte delle distribuzioni Linux). Si noti inoltre che se si desidera che i programmi installati in ~ / bin
vengano utilizzati in preferenza agli eseguibili di sistema, è necessario riordinare la dichiarazione di esportazione come segue:
export PATH=~/bin:$PATH
Ryan, sto cambiando questa per essere una risposta anziché un commento, poiché sembra che sia stato troppo breve. Fai tutto questo in " Terminale " ;.
Per usare il compilatore G ++, devi fare questo:
-
Passare alla directory in cui è stato memorizzato il file * .cpp.
cd ~ / programmi / myprograms /
(la ~ è una scorciatoia per la tua casa, ovvero / Users / Ryan / programmi / myprograms /, sostituisci con la posizione che hai effettivamente usato.) -
Compilalo
g ++ input.cpp -o output.bin
(output.bin può essere qualsiasi cosa con qualsiasi estensione, davvero. bin è semplicemente comune su unix.)Non ci dovrebbe essere NULLA restituito se ha avuto successo, e questo è ok . Generalmente si ottengono ritorni sugli errori.
Tuttavia, se si digita
ls
, verrà visualizzato l'elenco dei file nella stessa directory. Ad esempio, vedresti le altre cartelle, input.cpp e output.bin -
Dall'interno della directory, ora eseguilo con
./outbut.bin
Supponendo che la directory corrente non sia nel percorso, la sintassi è ./[name del programma]
.
Ad esempio ./a.out
Aggiungi seguente per ottenere i migliori avvisi, non te ne pentirai. Se possibile, compilare WISE (l'avviso è un errore)
- Wall -pedantic -Weffc++ -Werror
Un modo compatto per fare ciò potrebbe essere:
make foo && ./ Un modo compatto per fare ciò potrebbe essere:
<*>
È bello avere un one-liner in modo da poter rieseguire facilmente il tuo eseguibile di nuovo facilmente.
È bello avere un one-liner in modo da poter rieseguire facilmente il tuo eseguibile di nuovo facilmente.
Per compilare programmi C o C ++, esiste un comando comune:
crea nome file
-
./ filename
make costruirà il tuo file sorgente in un file eseguibile con lo stesso nome. Ma se vuoi usare il modo standard, puoi usare il compilatore gcc per creare programmi C & amp; g ++ per c ++
Per C:
gcc filename.c
./a.out
Per C ++:
g++ filename.cpp
./a.out
Usa un makefile
. Anche per progetti molto piccoli (= un file), probabilmente ne vale la pena perché è possibile avere diversi set di impostazioni del compilatore per testare le cose. Il debug e la distribuzione funzionano in questo modo molto più facilmente.
Leggi il make
manuale , a prima vista sembra piuttosto lungo, ma la maggior parte delle sezioni si può semplicemente sfogliare. Tutto sommato mi ci sono volute alcune ore e mi ha reso molto più produttivo.
Ho trovato questo link con le indicazioni:
http://www.wesg.ca/2007/11/how-to-write-and-compile-c-programs-on-mac-os-x/
Fondamentalmente lo fai:
gcc hello.c
./a.out (or with the output file of the first command)
basta inserire nella directory in cui si trova il tuo file c / cpp.
per compilare ed eseguire il codice c.
$gcc filename.c
$./a.out filename.c
per compilare ed eseguire codice c ++.
$g++ filename.cpp
$./a.out filename.cpp
" $ " è il simbolo del terminale mac predefinito
Per compilare ed eseguire un codice sorgente cpp dal terminale Mac è necessario:
- Se il percorso del file cpp è somePath / fileName.cpp, prima vai alla directory con il percorso somePath
- Per compilare fileName.cpp, digitare c ++ fileName.cpp -o fileName
- Per eseguire il programma, digitare ./fileName
L'esecuzione di un file .C utilizzando il terminale è un processo in due fasi. Il primo passo è digitare gcc nel terminale e rilasciare il file .C sul terminale, quindi premere Invio :
username$ gcc /Desktop/test.c
Nel secondo passaggio, eseguire il comando seguente:
username$ ~/a.out