Errore nella mia prima compilazione tramite terminale

Mac OS X e le sue Applicazioni

Moderatore: ModiMaccanici

Zerman
Stato: Non connesso
Nuovo Maccanico
Nuovo Maccanico
Iscritto il: mar, 04 mar 2014 15:35
Messaggi: 7

Top

Salve a tutti, ho avuto un problema nella mia prima compilazione di un file c++ tramite terminale, siccome mi sono stancato di utilizzare programmi con la compilazione, come xcode, eclipse ecc... ho voluto provare a far da me con il terminale, visto che ho già incontrato i comandi bash su linux, però la compilazione mi da un errore, il seguente:

Ema-mac:Desktop Ema$ g++ prova.cpp -o prova
ld: can't open output file for writing: prova, errno=21 for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Ema-mac:Desktop Ema$

una traduzione base mi fa un po capire cosa stia cercando di dirmi, ma sinceramente non so che fare, aspetto una mano grazie in anticipo

Avatar utente
Zen
Stato: Non connesso
Unix Expert
Unix Expert
Avatar utente
Iscritto il: sab, 14 gen 2012 01:24
Messaggi: 2435

Top

Hai per caso una cartella di nome prova? :D

Zerman
Stato: Non connesso
Nuovo Maccanico
Nuovo Maccanico
Iscritto il: mar, 04 mar 2014 15:35
Messaggi: 7

Top

si, molto probabilmente è una cartella che mi ha creato xcode, ma in che modo interferisce? :?:

Avatar utente
Hammarby
Stato: Connesso
Unix Expert
Unix Expert
Avatar utente
Iscritto il: gio, 29 ott 2009 14:28
Messaggi: 5388
Località: Stockholm, SE

Top

Zerman ha scritto:si, molto probabilmente è una cartella che mi ha creato xcode, ma in che modo interferisce? :?:
Tu gli stai dicendo:
g++ prova.cpp -o prova
cioè compila il programma prova.cpp e produci il programma eseguibile prova
siccome esiste una cartella prova, il povero g++ non riesce a scrivere il programma prova, in quanto esiste già una cartella con questo nome,
ma zitto zitto si fa gli affari suoi, a questo punto però il buon linker ld cerca il programma prova per linkarlo, e non lo trova, per cui ti dà l'errore.

Suggerimento: cambia il comando con
g++ prova.cpp -o prova.exe
oppure togli prima tutto quello che si chiama prova in questo modo
rm -rf prova
e tenta ancora con il tuo comando
g++ prova.cpp -o prova
Ognuno è come Dio lo ha fatto, ahimé...
...e spesso peggio.

Cervantes

Zerman
Stato: Non connesso
Nuovo Maccanico
Nuovo Maccanico
Iscritto il: mar, 04 mar 2014 15:35
Messaggi: 7

Top

Grazie ragazzi!... Scusate ma è la prima volta che programmo in c su osx, solitamente usavo Linux o winzoz... Per caso avete qualche altro consiglio per me o qualche mini guida per sapere qualcosa in più anche se la maggior parte dei comandi è uguale alla bash di Linux... Però imparare cose nuove è sempre utile :D

Avatar utente
Zen
Stato: Non connesso
Unix Expert
Unix Expert
Avatar utente
Iscritto il: sab, 14 gen 2012 01:24
Messaggi: 2435

Top

Vorrai dire c++ :)
Comunque dovresti indagare sui makefile, linker e debugger se vuoi provare ad evitare gli IDE.

Zerman
Stato: Non connesso
Nuovo Maccanico
Nuovo Maccanico
Iscritto il: mar, 04 mar 2014 15:35
Messaggi: 7

Top

si scusa c++ :wink: .. è che adesso sto facendo c all'università scusa... comunque ok grazie mille ora provo

Zerman
Stato: Non connesso
Nuovo Maccanico
Nuovo Maccanico
Iscritto il: mar, 04 mar 2014 15:35
Messaggi: 7

Top

perfetto funziona!! grazie di tutto ragazzi!! ;)

Zerman
Stato: Non connesso
Nuovo Maccanico
Nuovo Maccanico
Iscritto il: mar, 04 mar 2014 15:35
Messaggi: 7

Top

scusate ancora ma ho un altro errore -.-'

sh-3.2# chmod a +x bau.o
chmod: Invalid file mode: a
sh-3.2#

suppongo sia sbagliata la sintassi però nn ho trovato niente su internet, questa comando è dato dalla shell ma comunque ho provato anche come utente normale ma niente sempre lo stesso errore

motoko
Stato: Non connesso
Expert Latitante
Expert Latitante
Iscritto il: ven, 24 ott 2008 22:58
Messaggi: 451

Top

c'è uno spazio di troppo

chmod a+x bau.o

oppure

chmod 755 bau.o

(questo se vuoi aggiungere il permesso di eseguire il file a tutti)

Zerman
Stato: Non connesso
Nuovo Maccanico
Nuovo Maccanico
Iscritto il: mar, 04 mar 2014 15:35
Messaggi: 7

Top

funziona thanks stupido errore mio nn ci ho proprio pensato, me lo sentivo che si trattava di una favolata... purtroppo però mi da un altro errore -.-''''

Ema-mac:Desktop Ema$ ./bau.o
-bash: ./bau.o: Malformed Mach-o file
Ema-mac:Desktop Ema$

nn capisco perché con c mi deve dare tutti questi problemi -.-'

Avatar utente
Zen
Stato: Non connesso
Unix Expert
Unix Expert
Avatar utente
Iscritto il: sab, 14 gen 2012 01:24
Messaggi: 2435

Top

Il file .o è un file oggetto, non è un programma lanciabile così com'è. Dovrebbe essere passato prima al linker.

Rispondi

Torna a “Software”

Chi c’è in linea

Visitano il forum: Apple [Bot] e 24 ospiti