[Tech] Compilazione statica + utilizzo su altra macchina

Szymon Stefanek s.stefanek@libero.it
Mer 1 Mar 2006 22:44:38 CET


On Wednesday 01 March 2006 15:48, Marco Calviani wrote:
> Salve ragazzi,
>    avrei bisogno di configurare e compilare un programma (in
> particolare kile-1.8.1) su una macchina (gentoo, aggiornata), per poi
> poterlo utilizzare su una macchina (veloce ma con un sistema
> anzianotto). Mi sapete descrivere un metodo per poter procedere? Forse
> una compilazione statica delle librerie?
>
> PS: per spiegarmi meglio vorrei produrre un eseguibile precompilato un
> po' come fornisce mozilla per i suoi programmi......

Bisogna vedere quanto sono diversi i sistemi.

kile ha sicuramente molte dipendenze. X in primo luogo, qt, KDE e forse altra 
roba. Intanto dovresti avere le versioni statiche di tutte le librerie 
necessarie. Questo significa _almeno_ libc.a, libstdc++.a, libX11.a, 
libXext.a, libqt.a e libkdecore.a.. ma probabilmente anche diverse altre.

Un'alternativa è quella di compilare staticamente soltanto una parte delle 
librerie (quelle che proprio non ci sono sul sistema target oppure sono in 
versione molto diversa). Serve comunque una bella dose di hacking e 
probabilmente un po di fortuna. Questo perchè non è detto che sia possibile
fare una versione anche semi-statica. Molte applicazioni sono concepite in 
modo inerentemente dinamico (ad esempio perchè usano dei moduli caricabili a 
runtime) e hanno bisogno di pesanti modifiche strutturali per essere 
compilate staticamente.

Altra possibilità è quella di copiare brutalmente le dipendenze mancanti di 
kile da una macchina all'altra. 

Compili kile sulla macchina gentoo, installi e determini l'albero delle 
dipendenze. Parti, cioè, da

# ldd /pathto/kile

e guardi a quali librerie è collegato. Riapplichi poi il procedimento 
ricorsivamente su ogni dipendenza fino a quando non arrivi a librerie 
presenti sul sistema target in una versione verosimilmente compatibile (cioè 
stesso major, minor e patchlevel più vicini possibile). L'albero di 
dipendenze così trovato andrà copiato in toto.
Andranno poi trovate e copiate le dipendenze di runtime: eseguibili 
"schiavetti" non linkati a kile, dati, etc....
Anche qui ci vuole una bella dose di fortuna perchè i problemi che possono 
sorgere sono tantini. Uno che mi immagino è quello della collisione delle 
librerie...

'nsomma.. una rogna di nulla :D
Ma non puoi proprio compilare il tutto sulla macchina target ?
Forse ci metterai di più ma avrai sicuramente più probabilità di successo :D


-- 

Szymon Stefanek

------------------------------------------------------------------------------
-
- Powered by Chernobyl Nuclear Power Plant.
-
------------------------------------------------------------------------------
-------------- parte successiva --------------
Un allegato non testuale è stato rimosso....
Nome:        non disponibile
Tipo:        application/pgp-signature
Dimensione:  189 bytes
Descrizione: non disponibile
URL:         <http://lists.linux.it/pipermail/flug-tech/attachments/20060301/8fc9da8b/attachment.pgp>


Maggiori informazioni sulla lista flug-tech