PDA

Visualizza la versione completa : help lfs


skioppetto
14-03-2006, 11:23
allora.. vediamo se ho capito bene com'è che funziona sta toolchain:
1)installo le binutils (perchè hanno assemblatore e linker che sono alla base di ogni sorgente da compilare)
2)installo il gcc ossia il compilatore ma, visto che ha bisogno, oltre delle binutils, anche delle glibc sono costrtto a utilizzare le librerie dell'host
3)installo le librerie del kernel che sono necessarie per la compilazione delle glibc
4)installo le glibc utilizzando il nouvo gcc e le binutils
5)a questo punto avendo installato le glibc posso ricompilare gcc utilizzando tutte le librerie del nuovo sistema...

seguendo la mia vena anticonformista sto facendo il tutto con le ultime versioni dei suddetti pacchetti (chiaramente quelle stabili) e quindi trovo qualche differenza sintattica nei parametri di configurazione. Per quanto riguarda il punto 5 sapete che parametro passare nel configure per indicare quale sia il linker da utilizzare? mettendo --with-sysroot non basta per fargli capire dove si trova la basepath per trovare gli eseguibili?

U-bahn
14-03-2006, 14:17
Per quanto riguarda il punto 5 sapete che parametro passare nel configure per indicare quale sia il linker da utilizzare? mettendo --with-sysroot non basta per fargli capire dove si trova la basepath per trovare gli eseguibili?
no, perchè ./configure non modifica i sorgenti, crea solo i vari makefile

PATH=/tools/bin:/bin:/usr/bin, questo assicura che vengano utilizzati gli eseguibili del nuovo sistema non appena saranno installati

al primo bootstrap di gcc, esso si appoggia completamente all'host, così fanno anche le binutils e le *libc.

tramite uno spec file (che controlla il comportamento di gcc: quali programmi invocare, quali opzioni usare per quei programmi, etc..) viene detto a gcc di usare /tools/lib/ld-linux.so.2 come linker dinamico per i programmi che verranno compilati

d'ora in avanti verrà usato /tools/bin/ld come linker e verranno usate solo le librerie in /tools/lib

poichè nei sorgenti di gcc viene definito come linker di default (...) /lib/ld-linux.so.2, sarebbe necessario creare un nuovo spec file per dirgli di usare /tools/lib/ld-linux.so.2 per compilare i nuovi pacchetti...è tuttavia preferibile modificare i sorgenti stessi di gcc, tramite questa ( http://www.linuxfromscratch.org/patches/lfs/development/gcc-4.0.3-specs-1.patch) patch, che sostituisce /lib/ld-linux.so.2 con /tools/lib/ld-linux.so.2, per essere sicuri che come linker dinamico venga usato quest'ultimo

seguendo la mia vena anticonformista sto facendo il tutto con le ultime versioni dei suddetti pacchetti (chiaramente quelle stabili) e quindi trovo qualche differenza sintattica nei parametri di configurazione.se è la prima volta che provi ad installare un sistema da zero, attieniti al libro (la versione stabile); se proprio non puoi fare a meno delle ultime versioni dei pacchetti usa la versione di sviluppo

in ogni caso evita di usare gcc-4.1.0 perchè non è stabile...o meglio, il compilatore lo è, ma i sorgenti di alcuni programmi che trovi in giro per la rete (un esempio su tutti: inkscape), secondo le varie ridefinizioni della sintassi applicate in questa versione di gcc, no

skioppetto
15-03-2006, 09:55
gentilissimo!! comunque dopo vari tentativi tristemente falliti ho deciso di cambiare il gcc (provo la versione 4.0.3) che oltre tutto dovrebbe essere la stessa che utilizza ubuntu 5.10 e, fino ad esso non ho mai avuto problemi di compatibilità con nessun sorgente. Ho provato inoltre ad utilizzare le glibc 2.4 ma la compilazione si ferma quando mawk prova ad interpretare degli script... vengono fuori errori di sintassi; facendo una googlata ho visto che è un problema dell'interprete che non segue bene gli standard e non delgi script in sé: visti i problemi mi appropinquo ad utilizzare la versione 2.3.6. Un'altra domanda: non esistono delle toolchain di compilazione già pronte in rete?? E' solo una curiosità :)

Loading