Scusate il ritardo. Ho tralasciato un po' il tutto per riprenderlo
oggi. Ad ogni modo ho trovato questa ottima guida:
http://community.wd.com/t5/WD-My-Cloud/GUIDE-Cross-Compiling-Transmission-2-82/td-p/631649
E' pensata per un NAS con architettura ARM, ma io l'ho riadattata per
MIPS. Sono riuscito a costruirmi il cross-compiler e a compilare
transmission. Il comando file mi ha confermato che ho compilato per
MIPS. Direi che sono abbastanza contento di essere riuscito ad
arrivare fino a qui, anche grazie ai vostri preziosi consigli.
Purtroppo perĂ², una volta trasferiti i file compilati sull'hard disk
connesso al router il demone non si esegue...
/mnt/fs/A/transmission/bin # ./transmission-daemon
./transmission-daemon: No such file or directory
Grazie comunque a tutti quelli che hanno contribuito!
Innanzitutto complimenti per il progresso.
Per il problema del "No such file or directory" potrebbero esserci diverse
cause, tipo:
- transmission-daemon davvero non si trova in /mnt/fs/A/transmission/bin
- il file transmission-daemon non ha l'attributo x (execute). Verifica con
"ls -l /mnt/fs/A/transmission/bin/transmission-daemon"
- /mnt e' montato con l'opzione noexec. Il commando "mount" dovrebbe darti
le mount options.
- il file e' compilato ler un'architettuta sbagliata. Prova con
"file transmission-daemon"
Esegui questo commando sul tuo PC, perche il NAS potrebbe non avere
instalato il commando "file".
- la libc (oppure un altra shared lib) linkata a transmission-daemon non
esiste sul NAS (in quella versione). Esegui
"ldd /mnt/fs/A/transmission/bin/transmission-daemon"
sul NAS oppure il cross-ldd sul tuo PC per vedere le shared libs linkate.
HTH
Thomas
Grazie della risposta. Supponendo che abbia compilato per la giusta
architettura (a occhio sono abbastanza sicuro di si, anche se
crosstool-ng ha migliaia di opzioni di cui non conosco il senso),
penso che il problema sia l'ultimo da te citato. Ho lanciato questo
comando, che presumo serva a cercare le librerie dinamiche condivise,
e ho ottenuto:
$ readelf -d transmission-daemon | grep NEEDED
0x00000001 (NEEDED) Libreria condivisa: [librt.so.1]
0x00000001 (NEEDED) Libreria condivisa: [libevent-2.0.so.5]
0x00000001 (NEEDED) Libreria condivisa: [libcurl.so.4]
0x00000001 (NEEDED) Libreria condivisa: [libssl.so.1.0.0]
0x00000001 (NEEDED) Libreria condivisa:
[libcrypto.so.1.0.0]
0x00000001 (NEEDED) Libreria condivisa: [libz.so.1]
0x00000001 (NEEDED) Libreria condivisa: [libm.so.6]
0x00000001 (NEEDED) Libreria condivisa: [libpthread.so.0]
0x00000001 (NEEDED) Libreria condivisa: [libc.so.6]
Il comando file ha comunque restituito questo output, cosa che mi fa
sperare di aver compilato correttamente per MIPS:
$ file transmission-daemon
transmission-daemon: ELF 32-bit MSB executable, MIPS, MIPS-I version 1
(SYSV), dynamically linked (uses shared libs), for GNU/Linux 3.10.2,
with unknown capability 0x41000000 = 0xf676e75, with unknown
capability 0x10000 = 0x70403, not stripped
Quindi, suppongo che a transmission-daemon, per girare correttamente,
servano quelle librerie. Cosa devo fare? Le devo linkare col mio nuovo
e fiammante cross-compilatore? E devo specificare, prima di compilare
il tutt,o il loro path sul mio pc impostando qualche variabile
d'ambiente suppongo...