PDA

View Full Version : [C] Comportamento strano gcc


aleksay
22-07-2008, 16:47
Ciao a tutti!!!! son nuovo del forum :D !

Ho aperto una nuova discussione perche e un po di tempo che litigo con il compilatore gcc :muro: .....e non ho trovato nessuno in rete che potesse darmi una mano:cry:

Il problema e semplicemente questo:

non ho i permessi di eseguire gli eseguibili compilati da me!!!
...Ovviamente i permessi utente son tutti a posto e questo succede anche se sono root....

qualcuno sa darmi qualche dritta??

ilsensine
22-07-2008, 16:51
Possibili cause:
- compili su un file system montato con noexec
- qualche improbabile policy restrittiva di selinux & co
oppure, come credo
- ti stai semplicemente dimenticando di prependere "./" al nome dell'eseguibile (su linux la directory corrente non è nel path!)

aleksay
22-07-2008, 17:10
uh che velocita grande!!!:D

mm....allora
- per quanto riguarda il filesystem le uniche opzioni che uso sono rw,user
quindi questa possibilita l' avevo gia scartata
-per quanto riguarda il path no lo sapevo gia...e poi non direbbe:
nome-dell-eseguibile: Permission Denied

-invece le policy e SELinux....beh diciamo che questo e un aspetto che devo ancora approfondire....considera che adesso scrivo da una debian appena installata (sapevo che le debian avevano i servizzi selinux disabilitati di default:rolleyes: ) questo problema ho iniziato ad averlo quando e arrivato gcc-4.3....

ilsensine
22-07-2008, 17:15
Puoi scrivere passo passo la sequenza di comandi che fai dalla compilazione all'esecuzione?
Inoltre, cosa riporta
file <nome dell'eseguibile>

aleksay
22-07-2008, 17:27
ma guarda il fatto e che non mi da molto output cmq:

$ gcc -o agenzia ./agenzia.c ./viaggi.h
(restituisce il prompt... compilazione riuscita)
$ ./agenzia
bash: ./agenzia: Permission denied
$

ovviamente andando a vedere i permessi dell eseguibile appena creato son tutti a posto: -rwxr-xr-x

questo ovviamente e il problema di base....poi in conseguenza a questo mi fallisce ogni applicativo che compila ed esegue automaticamente,le chiamate di make config ecc ecc....:muro: :muro:

aleksay
22-07-2008, 17:29
e questo e la descrizione del eseguibile

$ file ./agenzia
./agenzia: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), for GNU/Linux 2.6.8, dynamically linked (uses shared libs), not stripped

ilsensine
22-07-2008, 17:43
mah

giancarlo@ilsensine:~$ echo 'void main(void) { printf("ciao\n"); }' | gcc -w -xc - && ./a.out
ciao
giancarlo@ilsensine:~$ file a.out
a.out: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), for GNU/Linux 2.6.8, dynamically linked (uses shared libs), not stripped
giancarlo@ilsensine:~$ gcc -v 2>&1|grep gcc\ version
gcc version 4.3.1 (Debian 4.3.1-2)

Sei sicuro che non è un problema a livello di file system? Ci vedo "user", quindi è un dispositivo removibile?
Prova ad aggiungere esplicitamente "exec" ai parametri di mount (oppure esegui mount -o remount,exec <mountpoint> )

Se copi l'eseguibile ad es. in /tmp, da lì lo puoi lanciare?

ilsensine
22-07-2008, 17:46
$ file ./agenzia
./agenzia: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), for GNU/Linux 2.6.8, dynamically linked (uses shared libs), not stripped
Domanda lammah (ma a questo punto ho finito i suggerimenti): la tua _è_ una macchina a 64 bit, con in esecuzione un kernel a 64 bit e l'userspace a 64 bit giusto?

aleksay
22-07-2008, 18:00
no sono dischi fissi..uso l'opzione user perche per ora devo ancora mettere a postoi tutto il sistema:D
...e cmq no lo provato adesso non esegue anche se ricompilo in /tmp

Si la mia e una macchina a 64 bit con un kernel a 64 bit precompilato...
come faccio a verificare che anche l'userspace sia a 64 bit??? e cmq credo di si perche e tutto nuovo di installazione da cd di debian etch amd64

per quanto riguarda l'esplicitare l'opzione exec...a rigor di logica almeno nel file system di root (quello montato in / ) dovrebbe essere attivato di default no??:mc: cmq adesso provo..

ilsensine
22-07-2008, 18:01
Scusa ma etch non ha il gcc 4.3...o sbaglio?

ilsensine
22-07-2008, 18:03
come faccio a verificare che anche l'userspace sia a 64 bit??? e cmq credo di si perche e tutto nuovo di installazione da cd di debian etch amd64
Basta un
file /bin/bash
ma se è amd64 sicuramente è a 64 bit...

per quanto riguarda l'esplicitare l'opzione exec...a rigor di logica almeno nel file system di root (quello montato in / ) dovrebbe essere attivato di default no??:mc:
DECISAMENTE direi di sì...


Se vuoi, inviami un hello word compilato che provo a eseguirlo qui...hai 3 minuti prima che esco

aleksay
22-07-2008, 18:06
si scusa e debian lenny....
come te lo mando il file???(son super niubbo del forum!!!!)

ilsensine
22-07-2008, 18:07
"gestisci allegati", nella finestra di risposta. Accetta solo alcune estensioni (tipo .gz)

aleksay
22-07-2008, 18:09
ok...spero arrivi ti ho messo solo l'eseguibile il codice lo conoscerai gia:D

ilsensine
22-07-2008, 18:10
WorksForMe(tm)

Lenny anche qui

ilsensine
22-07-2008, 18:11
Se esegui questo cambia qualcosa?
/lib/ld-linux-x86-64.so.2 ./hello

aleksay
22-07-2008, 19:08
Guarda...non so proprio che dire....aggiungendo l'opzione exec alla partizione che ospita la home adesso esegue su tutte le partizioni!!! ...ci son impazzito per piu di 6 mesi :muro: :muro:
adesso cerchero di capire un po il perche.....

grazie mille per il supporto...in un oretta mi hai risolto 10000 problemi!!!!!!!