| View previous topic :: View next topic |
| Author |
Message |
Peach Veteran


Joined: 08 Mar 2003 Posts: 3461 Location: Bologna, Italy
|
Posted: Sun Nov 06, 2005 12:13 pm Post subject: [SOLVED] cambiare CHOST durante la vita di un sistema |
|
|
Salve gente, proprio oggi quando mi sono deciso di installare usermode linux ho notato che lo stage 3 che ho installato nella macchina virtuale aveva nel make.conf CHOST settato a i686... come me ne sono accorto?
beh dopo che mi sono detto: aggiorno gcc dandogli il package della mia macchina host... il problema è che nella mia macchina host ho CHOST settato a i386... bel casino... ho dovuto cancellare la root_fs della macchina virtuale perchè stava iniziando a diventare più stressante correggere il problema che altro (in altre parole emerge non partiva).
ora mi domando... se volessi cambiare sulla mia macchina il CHOST cosa dovrei fare per evitare di sputtanare tutto e ricompilare tutto a modo in maniera sicura?
ma soprattutto: conviene??? _________________ Don't buy VAIO laptops.
"It's all fun and games, until someone loses an eye" - mom
Last edited by Peach on Sun Dec 04, 2005 1:10 pm; edited 1 time in total |
|
| Back to top |
|
 |
Luca89 Veteran


Joined: 27 Apr 2005 Posts: 2103 Location: Agrigento (Italy)
|
Posted: Sun Nov 06, 2005 12:29 pm Post subject: |
|
|
Devi utilizzare il tool fix_libtool_files.sh per sistemare tutto:
| Code: | Usage: fix_libtool_files.sh <old-gcc-version> [--oldarch <old-CHOST>]
Where <old-gcc-version> is the version number of the
previous gcc version. For example, if you updated to
gcc-3.2.1, and you had gcc-3.2 installed, run:
# fix_libtool_files.sh 3.2
If you updated to gcc-3.2.3, and the old CHOST was i586-pc-linux-gnu
but you now have CHOST as i686-pc-linux-gnu, run:
# fix_libtool_files.sh 3.2 --oldarch i586-pc-linux-gnu
Note that if only the CHOST and not the version changed, you can run
it with the current version and the '--oldarch <old-CHOST>' arguments,
and it will do the expected:
# fix_libtool_files.sh `gcc -dumpversion` --oldarch i586-pc-linux-gnu
|
 _________________ Running Fast! |
|
| Back to top |
|
 |
Peach Veteran


Joined: 08 Mar 2003 Posts: 3461 Location: Bologna, Italy
|
Posted: Sun Nov 06, 2005 12:34 pm Post subject: |
|
|
si ma nn ha funzionato come doveva... continuava a lamentarsi della mancanza di libstdc++.so.5
quindi ho brasato tutto... problema nessuno.. il pacco è aspettare che finisca l'emerge sync che è eterno su una macchina nuova, anche se virtuale _________________ Don't buy VAIO laptops.
"It's all fun and games, until someone loses an eye" - mom |
|
| Back to top |
|
 |
.:chrome:. Veteran


Joined: 19 Feb 2005 Posts: 4575 Location: Brescia, Italy
|
Posted: Sun Nov 06, 2005 12:36 pm Post subject: |
|
|
| Luca89 wrote: | | Devi utilizzare il tool fix_libtool_files.sh per sistemare |
cos'è questa storia che tutti si risolve con quello?
è un tool non documentato che viene usato DALL'EBUILD durante l'aggiornamento del compilatore. leggendo sul forum sembra che possa rimediare anche alla cervicale...
emerge -e system |
|
| Back to top |
|
 |
Ic3M4n Veteran


Joined: 02 Nov 2004 Posts: 3376 Location: Bergamo.
|
Posted: Sun Nov 06, 2005 12:43 pm Post subject: |
|
|
si, con libtool non fai altro che modificare i path per le librerie...
se vuoi modificare CHOST devi ricompilarti il sistema da zero. in quanto tutti i tuoi programmi sono stati compilati per i386. se li vuoi per i686 devi prima ricompilare il compilatore e poi dare un emerge -e world. però non credo che il miglioramento prestazionale che "potresti" ottenere valga una completa ricompilazione.
...asp. ma hai appena decompresso lo stage? allora non ci metti tantissimo, penso. |
|
| Back to top |
|
 |
.:chrome:. Veteran


Joined: 19 Feb 2005 Posts: 4575 Location: Brescia, Italy
|
Posted: Sun Nov 06, 2005 12:45 pm Post subject: |
|
|
| Ic3M4n wrote: | | devi prima ricompilare il compilatore |
non è necessario. figurati se un compilatore non può produrre output per diverse architetture non siamo in Microsoft |
|
| Back to top |
|
 |
Peach Veteran


Joined: 08 Mar 2003 Posts: 3461 Location: Bologna, Italy
|
Posted: Sun Nov 06, 2005 12:46 pm Post subject: |
|
|
| Ic3M4n wrote: | si, con libtool non fai altro che modificare i path per le librerie...
se vuoi modificare CHOST devi ricompilarti il sistema da zero. in quanto tutti i tuoi programmi sono stati compilati per i386. se li vuoi per i686 devi prima ricompilare il compilatore e poi dare un emerge -e world. però non credo che il miglioramento prestazionale che "potresti" ottenere valga una completa ricompilazione.
...asp. ma hai appena decompresso lo stage? allora non ci metti tantissimo, penso. |
quindi confermi che prestazionalmente parlando è inutile?
questo servirebbe per poter passare packages dall'host al guest senza dover ricompilare da zero... mi sa che quindi faccio prima a portare a i386 il guest e lasciare l'host così... _________________ Don't buy VAIO laptops.
"It's all fun and games, until someone loses an eye" - mom |
|
| Back to top |
|
 |
.:chrome:. Veteran


Joined: 19 Feb 2005 Posts: 4575 Location: Brescia, Italy
|
Posted: Sun Nov 06, 2005 12:49 pm Post subject: |
|
|
| Peach wrote: | quindi confermi che prestazionalmente parlando è inutile?
questo servirebbe per poter passare packages dall'host al guest senza dover ricompilare da zero... mi sa che quindi faccio prima a portare a i386 il guest e lasciare l'host così... |
no. nessuno ha detto questo.
secondo me (ma è un'idea mia) è inutile, dal punto di vista prestazionale, diventare matti con le flag USE. ma settare correttamente il processore non può di certo far male, anzi... |
|
| Back to top |
|
 |
Peach Veteran


Joined: 08 Mar 2003 Posts: 3461 Location: Bologna, Italy
|
Posted: Sun Nov 06, 2005 12:59 pm Post subject: |
|
|
quindi in realtà sarebbe più corretto ricompilarmi la mia macchina... hmmm... magari appena ho una rete distcc per poterlo fare.
Probabilmente installando un package con CHOST diversa si rompe per forza qualcosa; non necessariamente se si cambia la CHOST flag e si ricompila normalmente -ad es- gcc.
O mi sono perso qualcosa? _________________ Don't buy VAIO laptops.
"It's all fun and games, until someone loses an eye" - mom |
|
| Back to top |
|
 |
.:chrome:. Veteran


Joined: 19 Feb 2005 Posts: 4575 Location: Brescia, Italy
|
Posted: Sun Nov 06, 2005 2:11 pm Post subject: |
|
|
non credo proprio, anche se non ho mai provato.
un conto è compilare software per architetture diverse, lì è ovvio che non funziona, ma software compilati per versioni diverse della stessa architettura non vedo come potrebbero darsi fastidio. sarebbe come dire che un pentium non può eseguire codice i386: è assurdo, perché le due piattaforme sono compatibili.
oltretutto CHOST non setta nemmeno l'architettura target, se non sbaglio, ma sceglie il profilo del compilatore, quindi si tratterebbe solo di avere un compilatore ottimizzato o meno, che produce comunque output corretti |
|
| Back to top |
|
 |
Ic3M4n Veteran


Joined: 02 Nov 2004 Posts: 3376 Location: Bergamo.
|
Posted: Sun Nov 06, 2005 8:03 pm Post subject: |
|
|
@k.gothmog: quando dicevo che il vantaggio prestazionale non valeva la ricompilazione intendevo che quando hai tutto un sistema installato il ricompilare tutto potrebbe non valere la "spesa" di tempo per il guadagno prestazionale. poi dipende... onestamente non ho mai fatto paragoni, però molte distro compilano ancora per 386, e solo alcune tipo suse sono passate a 586, quindi non credo che il divario tra le due sia cos' ampio.
inoltre come hai detto tu nell'ultimo post in effetti avere tal parametro impostato su 386 non dovrebbe provocare un crash del sistema, potrebbe essere più facilmente una corruzione dello stage scaricato. o cose del genere cmq. |
|
| Back to top |
|
 |
randomaze Bodhisattva


Joined: 21 Oct 2003 Posts: 9977
|
Posted: Mon Nov 07, 2005 12:51 am Post subject: |
|
|
| Peach wrote: | quindi in realtà sarebbe più corretto ricompilarmi la mia macchina... hmmm... magari appena ho una rete distcc per poterlo fare.
Probabilmente installando un package con CHOST diversa si rompe per forza qualcosa; non necessariamente se si cambia la CHOST flag e si ricompila normalmente -ad es- gcc.
O mi sono perso qualcosa? |
Quello che sicuramente cambia é la dir:
| Code: | | /usr/lib/gcc-lib/i686-pc-linux-gnu/ |
sembra una cosa stupida ma in realtá la libreria che non ti trova (libstdc++.so.5) presumibilmente si trova in:
| Code: | | /usr/lib/gcc-lib/i386-pc-linux-gnu/ |
(oppure é in i686 e non in i386)
hai provato a cercarla con find e/o locate?
N.B. Se l'errore é questo ricorda che fix_libtool_files.sh va usato con il parametro --oldarch. _________________ Ciao da me! |
|
| Back to top |
|
 |
Peach Veteran


Joined: 08 Mar 2003 Posts: 3461 Location: Bologna, Italy
|
Posted: Mon Nov 07, 2005 4:10 am Post subject: |
|
|
| randomaze wrote: | | Peach wrote: | quindi in realtà sarebbe più corretto ricompilarmi la mia macchina... hmmm... magari appena ho una rete distcc per poterlo fare.
Probabilmente installando un package con CHOST diversa si rompe per forza qualcosa; non necessariamente se si cambia la CHOST flag e si ricompila normalmente -ad es- gcc.
O mi sono perso qualcosa? |
Quello che sicuramente cambia é la dir:
| Code: | | /usr/lib/gcc-lib/i686-pc-linux-gnu/ |
sembra una cosa stupida ma in realtá la libreria che non ti trova (libstdc++.so.5) presumibilmente si trova in:
| Code: | | /usr/lib/gcc-lib/i386-pc-linux-gnu/ |
(oppure é in i686 e non in i386)
hai provato a cercarla con find e/o locate?
N.B. Se l'errore é questo ricorda che fix_libtool_files.sh va usato con il parametro --oldarch. |
si infatti.. era in i686, quando il package aveva installato tutto in i386... fix_libtool_files.sh nn ha funzionato nemmeno passandogli --oldarch... o meglio... lui sembra funzionare, mi aveva anche segnalato il fix di un file, ma alla fine emerge continuava a lamentarsi (python chiamato da emerge in questo caso).
l'unica cosa che mi è chiara è che il package preso e sbattuto lì se aveva CHOST diverso spaccava tutto
ma nn mi è ancora chiaro se cambio CHOST e compilo regolarmente -tipo gcc- sono passibile di problemi del genere... _________________ Don't buy VAIO laptops.
"It's all fun and games, until someone loses an eye" - mom |
|
| Back to top |
|
 |
makoomba Moderator


Joined: 03 Jun 2004 Posts: 1856
|
Posted: Mon Nov 07, 2005 7:15 am Post subject: |
|
|
dopo un cambio di CHOST, ricompilerei tutto il sistema.
in particolare, rifarei il bootstrap
| Code: | | emerge glibc binutils gcc && emerge glibc binutils gcc |
e almeno
|
|
| Back to top |
|
 |
.:chrome:. Veteran


Joined: 19 Feb 2005 Posts: 4575 Location: Brescia, Italy
|
Posted: Mon Nov 07, 2005 1:39 pm Post subject: |
|
|
| Ic3M4n wrote: | | molte distro compilano ancora per 386, e solo alcune tipo suse sono passate a 586, quindi non credo che il divario tra le due sia cos' ampio. |
quello viene fatto solo per garantire la compatibilità architetturale.
| makoomba wrote: | | dopo un cambio di CHOST, ricompilerei tutto il sistema |
ribadisco che CHOST setta il compilatore, e non ha nessuna influenza sul codice compilato. faresti un'operazione inutile.
sarebbe cosa diversa se dovessi cambiare CFLAGS, ma anche in quel caso è più che sufficiente un emerge -e glibc, e nulla di più, dato che è solo dalle glibc che dipende tutto il sistema (e le sue prestazioni) |
|
| Back to top |
|
 |
makoomba Moderator


Joined: 03 Jun 2004 Posts: 1856
|
Posted: Mon Nov 07, 2005 2:12 pm Post subject: |
|
|
| k.gothmog wrote: | | ribadisco che CHOST setta il compilatore, e non ha nessuna influenza sul codice compilato. faresti un'operazione inutile |
| handbook wrote: | | Warning: Although it might be tempting for non-stage1 users, they should not change the CHOST setting in make.conf. Doing so might render their system unusable. Again: only change this variable if you use a stage1 installation. |
ti consiglio di cercare sul forum internazionale gli interventi di BobP e rac sull'argomento |
|
| Back to top |
|
 |
Peach Veteran


Joined: 08 Mar 2003 Posts: 3461 Location: Bologna, Italy
|
Posted: Mon Nov 07, 2005 2:16 pm Post subject: |
|
|
| handbook wrote: | | Warning: Although it might be tempting for non-stage1 users, they should not change the CHOST setting in make.conf. Doing so might render their system unusable. Again: only change this variable if you use a stage1 installation. |
eh, ho fatto io la cazzata a non modificarlo quando ho fatto stage 1 a suo tempo  _________________ Don't buy VAIO laptops.
"It's all fun and games, until someone loses an eye" - mom |
|
| Back to top |
|
 |
.:chrome:. Veteran


Joined: 19 Feb 2005 Posts: 4575 Location: Brescia, Italy
|
Posted: Mon Nov 07, 2005 3:05 pm Post subject: |
|
|
@makoomba: scusa un attimo... a me hanno insegnato a ragionare con la mia testa.
hai guardato a cosa serve CHOST? a giudicare da quello che scrivi parrebbe proprio di no
| make.conf wrote: | # Host Setting
# ============
#
# Change this line as appropriate (i686, i586, i486 or i386).
# All modern systems (even Athlons) should use "i686-pc-linux-gnu".
# All K6's are i586.
CHOST="i686-pc-linux-gnu" |
ora... andiamo a vedere cosa è quella roba:
| Code: | chrome@morgoth ~ $ which i686-pc-linux-gnu-gcc
/usr/bin/i686-pc-linux-gnu-gcc
chrome@morgoth ~ $ ls /usr/bin/*gnu-gcc
/usr/bin/i386-pc-linux-gnu-gcc* /usr/bin/i686-pc-linux-gnu-gcc* |
si tratta degli eseguibili di gcc. niente più.
se ha un'architettura i686 è liberissimo si cambiare la dichiarazione come meglio crede (non è così immediato il viceversa). per la cronaca... quel quote l'ho preso dal mio computer di casa, realizzato a partire da stage3 e con successivo emerge -e glibc
penso che ragionare con la propria testa non sia male, di tanto in tanto. |
|
| Back to top |
|
 |
makoomba Moderator


Joined: 03 Jun 2004 Posts: 1856
|
Posted: Tue Nov 08, 2005 6:08 am Post subject: |
|
|
ma davvero ?
vuoi dare, sul tuo sistema
| Code: | i386-pc-linux-gnu-gcc -v
ls -l /usr/lib/gcc-lib/i386-pc-linux-gnu
|
e postarmi l'output, gentilmente ?
beh, non so da te, ma sul mio sistema ho compilatore e librerie solo per i686.
cambiando CHOST, non posso compilare assolutamente nulla perchè, di fatto, non è presente alcun compilatore per la nuova architettura.
e non intendo solo l'eseguibile gcc ma anche, e soprattutto, tutte le librerie in /usr/lib/ggc-lib alle quali linkano i binari.
se si vuole cambiare CHOST, il primo passo è ricompilare gcc per la nuova architettura.
Le librerie i386 sono diverse da quelle generate per i686, avere un sistema in cui vengono utilizzate entrambe può causare problemi e malfunzionamenti difficilmente identificabili.
Per questo, nell'handbook, viene fortemente sconsigliata la modifica di CHOST a meno che si parta da uno stage1.
ora, i post che ti citavo sono relativi a ben note discussioni riguardati la "consistenza" del toolchain e quanto questa sia importante in gentoo (metadistro basata interamente sulla compilazione dei sorgenti )
in ultimo, una considerazione sulla forma.
il fatto che taluni utenti del forum possano apprezzare il "tono" di alcuni dei tuoi interventi, non implica che lo stesso valga per altri.
io sono fra gli altri, tienilo a mente. |
|
| Back to top |
|
 |
.:chrome:. Veteran


Joined: 19 Feb 2005 Posts: 4575 Location: Brescia, Italy
|
Posted: Tue Nov 08, 2005 5:09 pm Post subject: |
|
|
| makoomba wrote: | ma davvero ?
vuoi dare, sul tuo sistema
| Code: | i386-pc-linux-gnu-gcc -v
ls -l /usr/lib/gcc-lib/i386-pc-linux-gnu
|
e postarmi l'output, gentilmente ? |
ho scritto...
| k.gothmog wrote: | | se ha un'architettura i686 è liberissimo si cambiare la dichiarazione come meglio crede (non è così immediato il viceversa). |
se non fosse possibile il passaggio i386 -> i686 non funzionerebbe nemmeno nessuna delle distribuzioni pacchettizzate su macchine superiori all'i486 |
|
| Back to top |
|
 |
makoomba Moderator


Joined: 03 Jun 2004 Posts: 1856
|
Posted: Wed Nov 09, 2005 4:52 am Post subject: |
|
|
| k.gothmog wrote: | | se non fosse possibile il passaggio i386 -> i686 non funzionerebbe nemmeno nessuna delle distribuzioni pacchettizzate su macchine superiori all'i486 |
Questo non è un problema, il gcc sulle distro binarie è sempre compilato per la minima architettura supportata.
prendi i binari CentOS (ma vale per qualsiasi distro RH like): CHOST=i386-redhat-linux, march=i386, mcpu=i686 e funzionano su qualsiasi x86.
Il problema sta nel cambiare CHOST "live" sulla stessa macchina.
Entrambe le architetture funzionano correttamente, ma lo switch non si riduce alla mera modifica del make.conf |
|
| Back to top |
|
 |
.:chrome:. Veteran


Joined: 19 Feb 2005 Posts: 4575 Location: Brescia, Italy
|
Posted: Wed Nov 09, 2005 5:52 am Post subject: |
|
|
| makoomba wrote: | Questo non è un problema, il gcc sulle distro binarie è sempre compilato per la minima architettura supportata.
prendi i binari CentOS (ma vale per qualsiasi distro RH like): CHOST=i386-redhat-linux, march=i386, mcpu=i686 e funzionano su qualsiasi x86. |
esempio secondo me sbagliato. c'è una certa divergenza strutturale tra Gentoo (di cui qui si parla) e RedHat
| makoomba wrote: | Il problema sta nel cambiare CHOST "live" sulla stessa macchina.
Entrambe le architetture funzionano correttamente, ma lo switch non si riduce alla mera modifica del make.conf |
ma io non ho mai sostenuto questo. se guardi qualche post indietro puoi leggere quello che io avevo suggerito |
|
| Back to top |
|
 |
makoomba Moderator


Joined: 03 Jun 2004 Posts: 1856
|
Posted: Wed Nov 09, 2005 6:02 am Post subject: |
|
|
| k.gothmog wrote: | | esempio secondo me sbagliato. c'è una certa divergenza strutturale tra Gentoo (di cui qui si parla) e RedHat |
allora non ho capito cosa intendevi con "distro pacchettizzate" |
|
| Back to top |
|
 |
.:chrome:. Veteran


Joined: 19 Feb 2005 Posts: 4575 Location: Brescia, Italy
|
Posted: Wed Nov 09, 2005 7:41 am Post subject: |
|
|
| makoomba wrote: | | k.gothmog wrote: | | esempio secondo me sbagliato. c'è una certa divergenza strutturale tra Gentoo (di cui qui si parla) e RedHat |
allora non ho capito cosa intendevi con "distro pacchettizzate" |
invece hai capito... però io avevo fatto quel riferimento alludendo ad un aspetto diverso da quello che tu hai citato: CHOST è un discorso valido solo su Gentoo e derivate. tutto questo discorso non esiste sulle altre |
|
| Back to top |
|
 |
Benve l33t


Joined: 13 Mar 2003 Posts: 897 Location: Italy Romagna
|
Posted: Sat Nov 12, 2005 6:27 am Post subject: |
|
|
Salve gente, premesso che secondo me si fa prima a reinstallare.
Ho una domanda:
Se uso un pacchetto compilato con i386 su un sistema con tutto compilato per i686 dovrebbe tutto funzionare no ? |
|
| Back to top |
|
 |
|