|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 | |
|
Senior Member
Iscritto dal: Mar 2005
Messaggi: 1653
|
Glibc, installazione da sorgenti: come si fa?
Ciao a tutti!
Apro questa discussione per un problema specifico, ma dalla quale spero potrà uscire fuori una sorta di how-to sufficientemente dettagliato. Problema: vorrei usare l'ultima versione del programma Boinc su un sistema GNU/Linux Slackware 11. Ho scaricato il programma (binario) ma, al lancio, mi dice che non trova le glibc 2.4. Infatti su Slackware 11 sono installate le 2.3.6. Prima domanda: esiste un comando che mi faccia sapere esattamente quale versione di una data libreria è installata sul sistema? Vista la situazione, ho deciso di scaricare i sorgenti delle Glibc-2.4 per installarle. Leggendo le FAQ ed il file INSTALL ho capito che queste librerie sono fondamentali per il funzionamento del sistema e che una installazione non corretta potrebbe comprometterne seriamente la stabilità. Di conseguenza ho pensato che sarebbe stato opportuno installarle in una directory diversa da quella standard, in modo da mantenere come versione principale quella vecchia, rendendo disponibile la nuova versione solo a quei programmi che ne hanno bisogno. Quindi ho iniziato la configurazione e la compilazione nel modo seguente:
Cercando in giro, ho notato che è una cosa che capita a molti durante la compilazione di queste librerie. Il problema, a quanto sono riuscito a capire, sta nel fatto che le libgcc_s non sono di una versione compatibile con le glibc-2.4. Quindi suppongo che andrebbero prima aggiornate le libgcc_s. Seconda domanda: cosa sono le libgcc_s, e dove le trovo? Devo per caso aggiornare lo stesso gcc? Terza domanda: posso aggiornare tutte queste cose senza alterare la configurazione iniziale del sistema, cioè senza sostituire le librerie vecchie? Quarta domanda:: sapreste descrivermi, non necessariamente in dettaglio, l'interdipendenza dei software citati in questa discussione tra loro e con il kernel? Grazie
__________________
gica78r@ncc-1701:~$ tar -c tar: Codardamente mi rifiuto di creare un archivio vuoto |
|
|
|
|
|
|
#2 | ||
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Quote:
Per le libc è semplice, basta vedere il suffisso di /lib/ld-<versione>.so Quote:
Ti consiglio vivamente di installare un'altra distribuzione con le librerie richieste su una partizione (o in una macchina virtuale, e dopo l'installazione ti copi i file in una directory locale); puoi quindi far partire il tuo programma in chroot.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
||
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Mar 2005
Messaggi: 1653
|
Quote:
__________________
gica78r@ncc-1701:~$ tar -c tar: Codardamente mi rifiuto di creare un archivio vuoto |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jan 2001
Messaggi: 2289
|
oh le glibc!!!
prima regola: non cambiare mai le glibc da sotto al culo alla tua distro! seconda regola: non sfasciare mai una slackware (nota il cappellino Prima di iniziare, tieni presente che le glibc non son poi cosi' semplici da compilare. Slackware usa delle glibc 2.3.6 con il supporto alle nptl oltre che linuxthreads; perche'? non perche' Pat sia fuori di melone, ma perche' son le ultime glibc a supportare il kernel 2.4. Questo il motivo per cui non e' passato ancora alle glibc 2.4. NON puoi mantenere piu' versioni di glibc sullo stesso sistema. Se vuoi giocare con la distro installata, beh fai pure tranquillamente l'upgrade (tra l'altro mi pare che nella current ci siano addirittura le glibc 2.5) incrociando le dita e pregando che Bob (il tizio con la pipa) non ti tenga il broncio per un po'. Io userei lo slackbuild (lo trovi nei mirror slackware nella dir sources) del 2.5. In pratica e' come se fosse un port o un ebuild, insomma delle istruzioni per compilare e fare il pacchetto, ovviamente _senza_ risolvere alcuna eventuale dipendenza (evviva slackware!). Per l'errore da te segnalato, devi aggiornare anche il gcc perche' credo siano cambiate alcune delle api dalla 3.4 alla 4. P.S.: quando compilerai le glibc (e poi tutta la distro) sul tuo portatile con il supporto all'altivec sentirai la vera potenza dei powerpc... ah, no, scusa, tu usi debian P.P.S: hai la firma irregolare... "Sappiate che ad ogni nuova release dei driver proprietari nVidia per Linux, dio ammazza un micetto!"
__________________
FreeBSD, OpenBSD and GNU/Linux User Free Software Foundation Associate Member proudly member of poco-serio™ team! nella foto son quello simpatico... l'altro e' |Stan| |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: May 2004
Messaggi: 1136
|
Anche io ti sconsiglio di compilarti (per ora) le glibc! Confermo quanto detto da eclissi83 sul fatto che puoi scaricarti il tgz con le glibc 2.5 (che attualmente uso nel mio pc). E' un aggiornamento delicato, quindi un back-up non fa male. Se devi aggiornare alla current anche altri componenti importanti del sistema, aggiorna prima le glibc! Per aggiornare un qualsiasi pacchetto basta fare:
upgradepkg nome_pacchetto Per vedere che versione hai di qualsiasi programma basta che lanci da root "pkgtool" e scegli "view". P.S. La cosa più della ricompilazione delle glibc è che potresti avvertire i veri vantaggi prestazionali di una compilazione ad hoc per la tua macchina, almeno da quanto ho sentio in giro.
|
|
|
|
|
|
#6 | |||||
|
Senior Member
Iscritto dal: Mar 2005
Messaggi: 1653
|
Scusate la prolungata assenza... sto provando a costruire un sistema LFS e, ora che sono a buon punto, riprovo a modificare anche la Slack.
Quote:
Quote:
Quote:
Quote:
Quote:
Ciao
__________________
gica78r@ncc-1701:~$ tar -c tar: Codardamente mi rifiuto di creare un archivio vuoto |
|||||
|
|
|
|
|
#7 | ||||
|
Senior Member
Iscritto dal: Jan 2001
Messaggi: 2289
|
Quote:
Quote:
Quote:
Quote:
__________________
FreeBSD, OpenBSD and GNU/Linux User Free Software Foundation Associate Member proudly member of poco-serio™ team! nella foto son quello simpatico... l'altro e' |Stan| |
||||
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Mar 2005
Messaggi: 1653
|
Ok, sono arrivato alla ragionevole conclusione che sostituire le Glibc-2.3.6 con le 2.4 su un sistema in uso è praticamente impossibile, nonché quasi sicuramente distruttivo!
Purtroppo non sono riuscito a mettere le 2.4 nemmeno sul sistema LFS che stavo costruendo; infatti seguivo LFS-6.2, che fa ancora riferimento alle Glibc-2.3.6, ma ho cercato di andare per la mia strada installando software più recente di quello riportato dalla guida. Morale? Le Glibc-2.4 mi davano errori in compilazione. A questo punto, però, vorrei provare a sostituire le Glibc-2.3.6 già presenti sul sistema, precompilate per 486, con la stessa versione ma compilata specificamente per il mio processore. Come devo procedere su Slackware? C'è un modo di fare "pulito", una procedura standard? Dove posso trovare le informazioni circa le modalità, le opzioni e gli add-ons usati nel package ufficiale? Grazie
__________________
gica78r@ncc-1701:~$ tar -c tar: Codardamente mi rifiuto di creare un archivio vuoto |
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Jun 2000
Città: S.Giuliano (MI)
Messaggi: 1047
|
Quote:
tieni presente che OGNI eseguibile sul tuo sistema è linkato con le glibc. ad esempio in /bin trovi Codice:
find /bin -type f -exec ldd '{}' ';' | grep libc\.so | wc -l
__________________
“No te tomes tan en serio la vida, al fin y al cabo no saldrás vivo de ella” |
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Mar 2005
Messaggi: 1653
|
Vorrei usare lo slackbuild per ricompilare semplicemente le Glibc-2.3.6 per il mio processore. L'ho trovato sul dvd di installazione di Slackware 11. Al suo interno viene definita la variabile di ambiente ARCH nel seguente modo:
Codice:
ARCH=${ARCH:-i486}
Codice:
# I'll break this out as an option for fun :-) if [ "$ARCH" = "i386" ]; then OPTIMIZ="-O3 -march=i386 -mcpu=i686" elif [ "$ARCH" = "i486" ]; then OPTIMIZ="-O3 -march=i486 -mtune=i686" elif [ "$ARCH" = "i586" ]; then OPTIMIZ="-O3 -march=i586" elif [ "$ARCH" = "i686" ]; then OPTIMIZ="-O3 -march=i686" elif [ "$ARCH" = "athlon" ]; then OPTIMIZ="-O3 -march=athlon" elif [ "$ARCH" = "s390" ]; then OPTIMIZ="-O3" elif [ "$ARCH" = "x86_64" ]; then OPTIMIZ="-O3" else OPTIMIZ="-O3" fi Allora, io vorrei compilare per Pentium 3, quindi vorrei che nella CFLAGS ci fossero le opzioni -O3 e -march=pentium3. Definendo però la variabile ARCH=-i686 la variabile CFLAGS assumerebbe le opzioni -O3 e -march=i686 invece di pentium3. Che faccio, modifico lo script o vado bene anche con i686? E il livello di ottimizzazione -O3 è sicuro o è meglio scegliere -O2 o -Os? Ultimissima cosa: posso lanciare lo slackbuild direttamente dal dvd (dove ci sono già tutti i sorgenti e le patch) oppure no, perché tenterebbe di creare la directory di build nella directory source del dvd? Grazie PS: inizia a piacermi 'sta cacchio di Slack! PS2: non mi sono ancora molto chiare le differenze tra le opzioni -march, -mcpu, -mtune di gcc
__________________
gica78r@ncc-1701:~$ tar -c tar: Codardamente mi rifiuto di creare un archivio vuoto |
|
|
|
|
|
#11 | |||||
|
Senior Member
Iscritto dal: Jan 2001
Messaggi: 2289
|
Quote:
Quote:
Quote:
Quote:
Quote:
__________________
FreeBSD, OpenBSD and GNU/Linux User Free Software Foundation Associate Member proudly member of poco-serio™ team! nella foto son quello simpatico... l'altro e' |Stan| |
|||||
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: Mar 2005
Messaggi: 1653
|
Quote:
Ho capito che la compilazione delle Glibc è molto diversa dalla compilazione di una semplice applicazione, e che per farlo bisogna prima costruirsi un ambiente dotato di vari strumenti, tra cui un assembler, un linker, un compilatore, ecc... che funzionino indipendentemente dagli strumenti già presenti nel sistema. Qualcuno potrebbe chiarirmi meglio questo fatto? Quali sono le dipendenze (se così le possiamo chiamare) da soddisfare prima di compilare le Glibc? Nel manuale di Linux From Scratch, prima di compilare le Glibc si installano, in una directory locale:
Grazie
__________________
gica78r@ncc-1701:~$ tar -c tar: Codardamente mi rifiuto di creare un archivio vuoto |
|
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Jan 2001
Messaggi: 2289
|
Quote:
buon lavoro amicoide!
__________________
FreeBSD, OpenBSD and GNU/Linux User Free Software Foundation Associate Member proudly member of poco-serio™ team! nella foto son quello simpatico... l'altro e' |Stan| |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 08:15.












della ricompilazione delle glibc è che potresti avvertire i veri vantaggi prestazionali di una compilazione ad hoc per la tua macchina, almeno da quanto ho sentio in giro.








