Avanti Indietro Indice

6. Compatibilità all'indietro con i binari a.out

In rarissimi casi, è necessario usare binari a.out, o perché il codice sorgente non è disponibile o perché, per una qualche ragione, non è possibile compilare nuovi binari ELF dal sorgente.

Come succede, le installazioni ELF hanno quasi sempre un completo insieme di librerie a.out nella directory /usr/i486-linuxaout/lib. Lo schema di numerazione delle librerie a.out differisce da quello delle ELF, evitando intelligentemente conflitti che potrebbero creare confusione. I binari a.out dovrebbero perciò essere in grado di trovare le giuste librerie in fase di esecuzione, ma ciò potrebbe non accadere sempre.

Notate che il kernel necessita di avere il supporto per a.out, o direttamente o come modulo caricabile. Potrebbe essere necessario ricompilare il kernel per abilitare ciò. Inoltre, alcune distribuzioni di Linux richiedono l'installazione di uno speciale pacchetto di compatibilità, come xcompat di Debian, per eseguire applicazioni X a.out.

6.1 Un esempio

Jerry Smith ha scritto il comodissimo programma xrolodex alcuni anni fa. Esso usa le librerie Motif, ma fortunatamente è disponibile come binario linkato staticamente in formato a.out. Sfortunatamente, il sorgente necessita di numerosi aggiustamenti per essere ricompilato usando le librerie lesstif. Ancor più sfortunatamente, il binario a.out su di un sistema ELF va in bomba con il seguente messaggio d'errore.

xrolodex: can't load library '//lib/libX11.so.3'
No such library
(Traducendo: non è possibile caricare la libreria //lib/libX11.so.3; non c'è nessuna libreria con quel nome)

Si dà il caso che ci sia una tale libreria, in /usr/i486-linuxaout/lib, ma xrolodex è incapace di trovarla in fase di esecuzione. La soluzione semplice è di fornire un link simbolico nella directory /lib:

ln -s /usr/i486-linuxaout/lib/X11.so.3.1.0 libX11.so.3

Ne viene fuori che è necessario fornire link simili per le librerie libXt.so.3 e libc.so.4. Ciò deve essere fatto come root, naturalmente. Notate che dovrete essere assolutamente certi di non sovrascrivere o provocare conflitti di versione con librerie preesistenti. Fortunatamente, le nuove librerie ELF hanno numeri di versione più alti delle più vecchie a.out, per prevenire ed impedire proprio tali problemi.

Dopo aver creato i tre link, xrolodex funziona bene.

Il pacchetto xrolodex era originariamente pubblicato su Spectro, ma sembra che sia sparito da lì. Attualmente può essere scaricato da Sunsite come file sorgente [512k] in formato tar.Z.


Avanti Indietro Indice