PDA

View Full Version : [C\C++] col GCC, non riesco ad avviare gli eseguibili


Zero-Giulio
11-03-2009, 15:17
Sto cominciando a programmare in Linux...

Ho i miei .c e un .h

Da riga di comando (su Fedora), digido:

gcc whitney.h main.c (altri .c) -o nome_eseguibile -Wall -lm

e il gcc compila senza problemi, e mi genera l'eseguibile (si chiama eseguibile?) nome_eseguibile.

Poi, però, quando faccio

./nome_eseguibile

mi da errore. Dice permission denied.

Cosa sbaglio?

Forse nei comandi che do da riga di comando?

Eppure ho seguito due guide, ed entrambe dicevano le stesse cose. :-(

blu_eye4
11-03-2009, 18:58
l'header non credo si debba passare esplicitamente al gcc. per il resto sembra più questione di permessi...


neanche a me risulta che si debbano passare gli header nella compilazione... a permessi come stai messo? :stordita: (se è una cacchiata, perdono...)

Zero-Giulio
11-03-2009, 19:16
Metto sempre il su e poi digito la password. Nella riga di comando c'è sempre root@...

Il problema, cmq, me lo da anche con singoli file .c

Compila e fa quel che deve fare senza darmi errori. Quando poi però vado a avviare l'eseguibile, mi dice:

permission denied

:-(

Zero-Giulio
12-03-2009, 08:13
Vabbè, ma cosa cambia root o normale ai fini della compilazione?

cionci
12-03-2009, 09:11
Vabbè, ma cosa cambia root o normale ai fini della compilazione?
Non compilare come root. Prova senza...

Dacci l'output di:

ls -la nome_eseguibile

Zero-Giulio
12-03-2009, 13:49
Allora, ho rifatto tutto non da root...

Ho preso un semplice .c (sta tutto li, niente header o altro).

Ho fatto

gcc LeggiGmsh.c -o leggigmsh -lm -Wall

nessun errore, nessun warning. Crea il file leggigmsh.

Poi, se faccio

ls -la leggigmsh

trovo

-rw-rw-rw- 1 root root 7971 2009-03-12 14:45 leggigmsh

se invece faccio ./leggigmsh

esce

./leggigmsh: Permission denied

Zero-Giulio
12-03-2009, 16:12
Penso di aver risolto.

Il punto è che ho Linux su macchina virtuale, e stavo lavorando con files scritti da Windows su una cartella in comune tra l'host e il guest.

Il problema penso fosse questo.

Infatti se sposto il file nel disco del sistema guest tutto funziona bene.

Praticamente i .c sono nella cartella in comune. Compilo senza problemi, ma l'eseguibile ha diritti solo rw. Anche se faccio chmod non cambia niente: da riga di comando non da errori, ma i permessi rimangono quelli di prima.

Se invece copio l'eseguibile dentro il guest, chmod fa effetto e il ./ funziona.

Grazie a tutti per l'aiuto.