Newsgroup: it.comp.os.linux.sys
Titolo: il binario ribelle

Mentre installavo il programma appena scarito dalla rete, mi sono
imbattuto in una cosa sconvolgente: il binario che avevo decompresso
(con tar -zxf etc.tgz), e che avevo posizionato in /usr/bin, con il suo 
bravo solito aspetto(permessi e proprietario) non partiva! Ovvero, il
terminale restituiva questo messaggio: 
bash: /usr/bin/ilcattivo: No such file or directory
Come puo' essere, ho esclamato! eppure file(il comando) mi conferma
che ho a che fare con un binario, ed e' li' dove stanno tutti gli altri,
perche' allora non parte, perche'? Se qualcuno sa' come risolvere questo
x-file, perfavore mi illumini che ne ho bisogno!
________________
bernabe pari
ber...@inwind.it

Il giorno Sun, 26 Jan 2003, Bernabe Pari così ha scritto:

  Un'ipotesi:
aselli@aselli ~$ touch pippo\
aselli@aselli ~$ ll pip*
-rw-------    1 aselli          0 Jan 27 11:52 pippo
aselli@aselli ~$ ls pippo
/bin/ls: pippo: No such file or directory
aselli@aselli ~$ rm pippo\
aselli@aselli ~$ ll pip*
/bin/ls: pip*: No such file or directory
  Sandro
-- 
Bellum se ipsum alet
       La guerra nutre se stessa
Livio, Ab urbe condita, XXXIV,9



Controlla attentamente l'output di file, dovrebbe dirti qualcosa come:
% file =ls
/bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux
2.2.0, dynamically linked (uses shared libs), stripped
La sensazione è che tu stia provando ad eseguire un file eseguibile
1) a.out
2) per qualche altra CPU (chessò Sparc o PPC)
4) per qualche altro un*x
Andrea

 4) per qualche altro un*x
Oppure linkato dinamicamente con librerie
non presenti nel sistema... Ritorna lo
stesso "strano" errore...
bye,
-- 
piergiorgio

Piergiorgio Sartor wrote:

Il fedelissimo /usr/bin/file dice: 
$ file /usr/bin/xsox
/usr/bin/xsox: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), 
dynamically linked (uses shared libs), stripped
(si tratta di xsox da "
www.ibiblio.org/pub/Linux/apps/sound/convert/
", 
maledetto il giorno che ti ho incontrato!). Ok, sono convinto che 
manchino delle librerie linkate dinamicamente. Tuttavia mi aspettavo
che ldd me lo dicesse esplicitamente, invece anche lui ripete:
$ ldd /usr/bin/xsox
/usr/bin/ldd: /usr/bin/xsox: No such file or directory
Ad ogni modo, grazie a P.Sartor e A.Mistrali per i consigli!
_________________
bernabe pari
ber...@inwind.it

 
No Sandro, non e' cosi', grazie comunque!
_________________
bernabe pari
ber...@inwind.it

 /usr/bin/ldd: /usr/bin/xsox: No such file or directory
Uhm, questo e` strano, mi pare di ricordare
che ldd ritorni sempre quale libreria dinamica
sia richiesta, pero` potrei sbagliare...
bye,
-- 
piergiorgio

 /usr/bin/ldd: /usr/bin/xsox: No such file or directory
Infatti, perche' manca "appena" la versione giusta della libc, e con
essa anche il library loader adatto (ld-linux.so.1). Senza il library
loader il kernel non puo' eseguire il binario, perche' a tutti gli
effetti ne manca un pezzo.
E' un problema spinoso: se trovi i pacchetti della libc5 puoi provare
a installarla, ma non so quanti casini possano sorgere cercando di
farla funzionare su di una distribuzione basata su libc6, a mio parere
ti conviene cercare i sorgenti e ricompilarlo.
NOTA: durante il periodo di transizione tra libc5 e libc6 c'erano
distribuzioni che le supportavano entrambe (la RedHat 5.0 per fare
un esempio, roba del '97), quindi si puo' fare. Solo non saprei dirti
quanto sia facile farlo, a naso direi non molto...
Ciao,
Daniele

 ti conviene cercare i sorgenti e ricompilarlo.
Avere libc5 e libc6 non comporta alcun problema,
dato che hanno nomi completamente diversi.
Comunque, se il sorgente e` disponibile e non vi
sono altre limitazioni, consiglierei anche io di
ricompilare, magari con un gcc 3.2.1... :-)
bye,
-- 
   Piergiorgio Sartor

 dato che hanno nomi completamente diversi.
Beh, sulle cose che non ho mai provato io tendo sempre
ad essere un po' pessimista :-))
Ciao,
Daniele

 ti conviene cercare i sorgenti e ricompilarlo.
Guarda, a me succede la stessa cosa con un pacchetto ricompilato, tale
tleds
root@damun:~# ls -l /usr/local/src/tleds-1.04/tleds
-rwx--x---    1 root     root        13424 set 29  1997
/usr/local/src/tleds-1.04/tleds*
root@damun:~# file /usr/local/src/tleds-1.04/tleds
/usr/local/src/tleds-1.04/tleds: ELF 32-bit LSB executable, Intel 80386,
version 1 (SYSV), dynamically linked (uses shared libs), not stripped
root@damun:~# /usr/local/src/tleds-1.04/tleds
bash: /usr/local/src/tleds-1.04/tleds: No such file or directory
root@damun:~# ldd /usr/local/src/tleds-1.04/tleds
/usr/bin/ldd: /usr/local/src/tleds-1.04/tleds: No such file or directory
Il programma e' stato compilato in questo modo (dal Makefile)
gcc -DNO_X_SUPPORT -O3 -Wall -o tleds tleds.c
Onestamente non conosco i parametri di gcc e non vorrei che fosse
sbagliato il Makefile ma mi sembra strano.
Hai qualche idea?
TIA
-- 
The fish doesn't think ,
cause the fish knows everything
	>>>:/OuZ\:<<<
per rispondermi in mail rimuovere TOGLIQUESTO

 sbagliato il Makefile ma mi sembra strano.
Francamente non ho idee: del problema con la libc5 me ne sono
accorto guardando nel file e vedendo che c'era un riferimento
esplicito a ld-linux.so.1 (che e' il library loader per la libc5).
Nel tuo caso, essendo il programma ricompilato da zero, non
dovrebbe essere questo, a meno che tu non abbia chiesto a
gcc di compilare per un altro target. Pero' la riga di comando
che hai postato non e' di questo tipo (le opzioni sono molto
standard: definisce una costante e specifica il nome dell'eseguibile,
niente di esotico). Al limite potrebbe essere sbagliata la configurazione
del linker, ma a parte che e' improbabile, se fosse questo deve
darti gli stessi sintomi su qualunque programma tu voglia compilare.
Ciao,
Daniele

 darti gli stessi sintomi su qualunque programma tu voglia compilare.
Ho sempre compilato ogni cosa che uso (uso Slackware) quindi non penso sia
neache questo il problema; ti ringrazio comunque dell' interessamento,
ciao :)
