Buongiorno a tutti, premetto che sono una dilettante XD

ho creato un file.c, l'ho compilato con

gcc -c file.c -o file

e compila senza errori. Nel momento in cui lo vado ad eseguire con ./file mi dice permesso negato.

Ho provato a creare un altro file in un'altra cartella, ma niente.
Ho guardato i permessi ed ho aggiunto +x, ma niente.

Che devo fare? grazie mille

PS: macchina virtuale con Xubuntu 14.04.2

chiesto 15 Apr '15, 11:58

valentina_88's gravatar image

valentina_88
20112

modificato 15 Apr '15, 14:28

enzotib's gravatar image

enzotib ♦♦
14.1k113187

hai messo "sudo" davanti al comando per dargli i permessi? sudo chmod +x file

(15 Apr '15, 12:11) loucho loucho's gravatar image

@loucho: per quale motivo servirebbero i privilegi di amministratore per cambiare i permessi di un proprio file?

(15 Apr '15, 14:20) enzotib ♦♦ enzotib's gravatar image

lo avevo fatto senza sudo, comunque ho provato e mi dice: cannot execute binary file: formato eseguibile non valido

(15 Apr '15, 15:59) valentina_88 valentina_88's gravatar image

Quando usi l'opzione -c, il compilatore effettua solo la fase di compilazione, senza effettuare il linking, l'output è un file oggetto, di quelli di norma chiamati .o (oppure in Windows .obj), che quindi, permessi o non permessi, non è un eseguibile. Questo puoi anche vederlo con il comando file che ti dice di che tipo è un dato file:

enzotib@ubuntu:~$ file file.c file
file.c: C source, ASCII text
file:   ELF 32-bit LSB  relocatable, Intel 80386, version 1 (SYSV), not stripped

Per creare un eseguibile devi rimuovere l'opzione -c.

enzotib@lubuntu:~$ gcc file.c -o file
enzotib@ubuntu:~$ file file.c file
file.c: C source, ASCII text
file:   ELF 32-bit LSB  executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=34954765f45bba0032f2dc2c61193f3354dbe8bc, not stripped

Guarda la differenza tra relocatable e executable.

coll. permanente

ha risposto 15 Apr '15, 14:24

enzotib's gravatar image

enzotib ♦♦
14.1k113187

modificato 15 Apr '15, 14:26

grazie mille per la risposta, il problema era proprio che mettevo -c.. grazie per avermi spiegato che effettua solo la fase di compilazione, senza linking.. gentilissimo

(15 Apr '15, 16:03) valentina_88 valentina_88's gravatar image

@valentina_88 se hai risolto, ricordati di accettare la risposta come corretta, premendo la spunta "v" alla sua sinistra.

(15 Apr '15, 17:05) alevipri ♦♦ alevipri's gravatar image
La tua risposta
abilita/disabilita anteprima

Segui questa domanda

Via email:

Una volta eseguito l'accesso potrai iscriverti a tutti gli aggiornamenti qui

Via RSS:

Risposte

Risposte e commenti

Basi di markdown

  • *corsivo* o __corsivo__
  • **grassetto** o __grassetto__
  • collegamento:[testo](http://url.com/ "titolo")
  • immagine?![alt testo](/path/img.jpg "titolo")
  • elenco numerato: 1. Foo 2. Bar
  • per aggiungere un'interruzione di riga, aggiungi due spazi a fine riga e premi «Invio»
  • è supportato anche semplice HTML

Tag:

×300
×109
×23

domanda posta: 15 Apr '15, 11:58

domanda visualizzata: 4,937 volte

ultimo aggiornamento: 15 Apr '15, 17:05

Chiedi è un servizio di supporto gestito da Ubuntu-it. Contattaci!

powered by OSQAPostgreSQL database
Ubuntu e Canonical sono marchi registrati da Canonical Ltd.