View previous topic :: View next topic |
Author |
Message |
tocas Apprentice
Joined: 01 Jan 2004 Posts: 280 Location: 43°50'-10°27'
|
Posted: Sat Aug 19, 2006 2:22 pm Post subject: CFLAGS ... ancora qualche dubbio. |
|
|
Penso che questo argomento sia stato trattato ampiamente nel forum, ma ultimamente mi sono trovato in una situazione che non mi è proprio chiara anche dopo avere cercato in giro e letto le varie documentazioni su http://gentoo-wiki.com/Safe_Cflags.
Premessa:
tutto è iniziato quando ho dato il via ad una nuova installazione Gentoo su una vecchia MB con processore K6 e clock intorno ai 500Mhz. Visto che non avevo voglia di aspettare troppo tempo davanti al monitor in attesa di varie compilazioni, ho prensato di portare l'hd direttamente sul mio desktop, un Athlon 2400+ (sempron) ed eseguire l'installazione in ambiente chroot compilando il codice in modo tale che fosse compatibile ad entrambe le cpu.
Sono partito con una stage3 (solo i386...se non erro) e impostato CFLAGS="-O2 -march=i686 -pipe" in /etc/make.conf e proseguito nella compilazioni dei pacchetti mancanti fino alla fine.
E' evidente che ho commesso uno sbaglio ma non ricordo il perchè ho impostato -march=i686, mi sembra di aver letto qualche doc in giro ma non sono più riuscito a ritrovarla.
Dopo aver compilato anche il kernel per la CPU K6 e sempre sulla macchina Athlon, ho avviato la nuova installazione senza problema.
A questo punto ho smontato l'hd per rimontarlo nella macchina con processore K6 e riavviato......il kernel è partito regolarmente ma si è bloccato tutto appena lanciato il processo INIT.
La prima cosa che mi è venuta da pensare è stata quella di aver "toppato" la CFLAGS di compilazione e aver dato in pasto al K6 un binario che lui non riusciva a "digerire".
Avendo sottomano un'altra MB un pò più recente, un PIII a 700Mhz ed ho pensato di cambiare la scheda madre e, giusto il tempo per il lavoro sono riuscito ad avviare la nuova Gentoo con successo.
A questo punto ho ricompilato solo il kernel per il PIII.
Tutto questo per arrivare a chiedere... ma con quali processori è compatibile il codice compilato per i686 ?
http://gentoo-wiki.com/Safe_Cflags quì sono riportati i VIA Processors (e quì dovrebbe essere il mio sbaglio nella scelta) ma perchè ha funzionato per un Athlon Sempron e un PIII ?
Come avrei dovuto impostare la CFLAGS per compilare su un Athlon Sempron in modo che i binari fossero comatibili anche per un K6 ? sicuramente i386 ma si poteva fare diversamente ?
-----
---- |
|
Back to top |
|
|
randomaze Bodhisattva
Joined: 21 Oct 2003 Posts: 9985
|
Posted: Sat Aug 19, 2006 2:51 pm Post subject: Re: CFLAGS ... ancora qualche dubbio. |
|
|
tocas wrote: | Tutto questo per arrivare a chiedere... ma con quali processori è compatibile il codice compilato per i686 ? |
Per quelli di famiglia i686, ovviamente.
Il K6 dovrebbe essere un i585.
Il PentiumIII dovrebbe essere un i686
Quote: | http://gentoo-wiki.com/Safe_Cflags quì sono riportati i VIA Processors (e quì dovrebbe essere il mio sbaglio nella scelta) ma perchè ha funzionato per un Athlon Sempron e un PIII ? |
A questo punto spiegami da dove vengono fuori i VIA Processors perché ho riletto anche il messaggio cercando un processore che mi era sfuggito.
Peraltro in quella pagina c'é anche il K6, perché non hai guardato li le CFLAGS consigliate? _________________ Ciao da me! |
|
Back to top |
|
|
tocas Apprentice
Joined: 01 Jan 2004 Posts: 280 Location: 43°50'-10°27'
|
Posted: Sat Aug 19, 2006 3:32 pm Post subject: |
|
|
Come non ci sono... questi sono le due CPU che hanno
Code: |
Esther C5J (Via C7)
CHOST="i686-pc-linux-gnu"
CFLAGS="-march=i686 -mmmx -msse -msse2 -msse3 -Os -pipe"
CXXFLAGS="${CFLAGS}"
|
Code: | Nehemiah (C5XL)/C5P (Via)
CHOST="i686-pc-linux-gnu"
CFLAGS="-march=i686 -msse -mmmx -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}" |
Facendo riferimento alle famiglie probabilmente è lì che avevo trovato la documentazione di cui vado parlando e probabilmente è lì che ho fatto confusione.
Non ho scelto K6 perchè non ho chiaro se posso compilare codice per un K6 da un Athlon Sempron anche se, le CPU dovrebbero avere la compatibilità verso il basso e da quì la scelta (errata) per la famiglia i686.
La scelta i585 sarebbe stata giusta ? avrei ottenuto binari compatibili con K6 ma meno ottimizzati per questa CPU ?
Se non erro altre distribuzioni rilasciano i pacchetti precompilati in base a questo criterio.
Ma non esiste un documentazione più approfondita in merito, un sorta di albero genealogico di compatibilità fra le cpu e di appartenenza alle relative famiglie ?
Scusate per la "sfilza" di domande ma questo modo di installare Gentoo l'ho trovato utile per risolvere altri problemi e avrei intenzione di riutilizzarlo.
Ho trovato dei riferimenti anche quì dove si parla di stage4
https://forums.gentoo.org/viewtopic-t-312817-highlight-stage4.html
Dove si dice....
Code: |
Portability/Prerequisites
Against some misconceptions you may use your stage4 on a box with a different CPU as well. If - and only if - you plan to use your stage4 for another CPU type (not just another box with the same CPU), you must check your /etc/make.conf for the CFLAGS entry:
( < GCC-3.4 )
CFLAGS="-Os -mcpu=athlon -funroll-loops -pipe"
( >= GCC-3.4):
CFLAGS="-Os -mtune=athlon -funroll-loops -pipe"
If your CFLAGS looks like this:
CFLAGS="-Os -march=athlon -funroll-loops -pipe"
you won't be able to use your stage4 on a box with a different CPU type. "march" breaks compatibility, "mcpu/mtune" doesn't. There is a simple workaround: replace "march" with "mcpu/mtune" and recompile your whole system:
|
In questo caso avrei ottenuto l'ottimizzazione per Athlon e compatibilità verso TUTTE le altre CPU, soluzione, forse, meno conveniente nel caso trattato.
--- |
|
Back to top |
|
|
randomaze Bodhisattva
Joined: 21 Oct 2003 Posts: 9985
|
Posted: Sat Aug 19, 2006 3:44 pm Post subject: |
|
|
tocas wrote: | Come non ci sono... questi sono le due CPU che hanno |
Si ma il K6 é abissalmente differente.
sicuramente non ha nessun sse e se non ricordo male, non é neanche l'mmx (all'epoca il duello era mmx vs 3dnow).
Le Cpu Via C7 e C5 (ma anche le C3) sono decisamente piú recenti rispetto al K6.
Credo che la roba del K6 funzioni anche su Sempron altrimenti, come consigliato, taglia la testa al toro e usa -mtune. _________________ Ciao da me! |
|
Back to top |
|
|
tocas Apprentice
Joined: 01 Jan 2004 Posts: 280 Location: 43°50'-10°27'
|
Posted: Sat Aug 19, 2006 4:13 pm Post subject: |
|
|
randomaze wrote: |
[...]
Credo che la roba del K6 funzioni anche su Sempron altrimenti, come consigliato, taglia la testa al toro e usa -mtune.
|
Tnx randomaze ! |
|
Back to top |
|
|
xdarma l33t
Joined: 08 Dec 2003 Posts: 719 Location: tra veneto e friuli (italy)
|
Posted: Tue Aug 22, 2006 6:15 am Post subject: |
|
|
randomaze wrote: |
Si ma il K6 é abissalmente differente.
sicuramente non ha nessun sse e se non ricordo male, non é neanche l'mmx (all'epoca il duello era mmx vs 3dnow).
Credo che la roba del K6 funzioni anche su Sempron altrimenti, come consigliato, taglia la testa al toro e usa -mtune. |
A me risulta che tutti i K6 abbiano l'estensione mmx, all'epoca, se non sbaglio, AMD acquistò la licenza direttamente da Intel. Cyrix, al contrario, implementò una versione mmx-compatibile. Il K6 che avevi per le mani dovrebbe avere anche il 3dnow (essendo a 500MHz dovrebbe essere un K6-2/3/+). Le estensioni sse mi sembrano siano state introdotte da AMD con il K7. Sempre IM(memory), chiaramente.
Se la gentoo che hai preparato funziona su K6, funzionerà anche su Sempron, K7, K8,...
La mia gentoo è passata da K6-2 a Pentium3 praticamente indenne ma avevo impostato "-march=i586 -mtune=k6-2".
Ma il K6 che fine ha fatto? Ti avanza? :-) _________________ proud user of faKeDE-4.7.3 -> back to windowmaker -> moved to LXQt |
|
Back to top |
|
|
tocas Apprentice
Joined: 01 Jan 2004 Posts: 280 Location: 43°50'-10°27'
|
Posted: Wed Aug 23, 2006 12:45 pm Post subject: |
|
|
xdarma wrote: |
[...]
La mia gentoo è passata da K6-2 a Pentium3 praticamente indenne ma avevo impostato "-march=i586 -mtune=k6-2".
Ma il K6 che fine ha fatto? Ti avanza?
|
Code: | -march=i586 -mtune=k6-2 |
... adesso i miei dubbi sono andati ....consolidandosi .
Ero sicuro di avere capito che -mtune dovesse sostituire -march nel caso si volessero binari compatibili con le altre architetture e non andassero inseriti contemporaneamente.
La MB K6 sarà oggetto di ulteriori test FLAGS.
--- |
|
Back to top |
|
|
xdarma l33t
Joined: 08 Dec 2003 Posts: 719 Location: tra veneto e friuli (italy)
|
Posted: Wed Aug 23, 2006 1:24 pm Post subject: |
|
|
tocas wrote: |
... adesso i miei dubbi sono andati ....consolidandosi :( .
Ero sicuro di avere capito che -mtune dovesse sostituire -march nel caso si volessero binari compatibili con le altre architetture e non andassero inseriti contemporaneamente.
|
Dal man gcc:
Quote: |
While picking a specific cpu-type will schedule things appropriately for that particular chip, the compiler will not generate any code that does not run on the i386 without the -march=cpu-type option being used.
|
-mtune e -march sono complementari, se indichi solo -mtune=k6-2 sarà implicito -march=i386.
Quindi sarai super-compatibile perchè i binari funzioneranno anche su un 386, ma francamente non credo che ti capiterà di installare cpu 386 o 486 e penso che tu possa alzare il "minimo comun denominatore" a i586.
Anche se effettivamente dovrei avere in soffitta un 386dx a 40Mhz, quasi quasi mi metto in cerca di ram :-D
Quote: |
La MB K6 sarà oggetto di ulteriori test FLAGS.
|
Peccato, i K6 mi stanno simpatici ;-) _________________ proud user of faKeDE-4.7.3 -> back to windowmaker -> moved to LXQt |
|
Back to top |
|
|
tocas Apprentice
Joined: 01 Jan 2004 Posts: 280 Location: 43°50'-10°27'
|
Posted: Thu Aug 24, 2006 3:34 pm Post subject: |
|
|
....allora....vediamo se ho le idee un pò piu chiare, volendo ricompilare tutto per il PentiumIII su un'altro sistema con CPU AMD >= Athlon la massima ottimizzazione compatibile che posso ottenere è CFLAGS=i686, giusto ?
.... |
|
Back to top |
|
|
xdarma l33t
Joined: 08 Dec 2003 Posts: 719 Location: tra veneto e friuli (italy)
|
Posted: Thu Aug 24, 2006 8:35 pm Post subject: |
|
|
tocas wrote: | ....allora....vediamo se ho le idee un pò piu chiare, volendo ricompilare tutto per il PentiumIII su un'altro sistema con CPU AMD >= Athlon la massima ottimizzazione compatibile che posso ottenere è CFLAGS=i686, giusto ? :roll: :roll:
|
"ricompilare per Pentium3 su AMD K7" spero non voglia dire che crei dei binari con il K7 che poi installi sul Pentium3, altrimenti sono io che non ho capito una mazza...
"CFLAGS=i686" non assomiglia né a -march né a -mtune, e temo non venga accettato da gcc...
Se stai meditando di aggiungere un disco fisso al K7, compilare una gentoo in background, staccare il disco e riavviare su un Pentium3, ALLORA effettivamente puoi impostare al massimo -march=i686 senza definire -mtune. Puoi aggiungere anche -mmmx. Ci sarebbe anche -msse che è supportata da tutti i Pentium3 ma non da tutti i K7 e da nessun K6, quindi controlla le estensioni dei processori che usi prima di impostare le CFLAGS.
Diciamo che forse hai le idee chiare ma non si vede a colpo d'occhio ;-) _________________ proud user of faKeDE-4.7.3 -> back to windowmaker -> moved to LXQt |
|
Back to top |
|
|
tocas Apprentice
Joined: 01 Jan 2004 Posts: 280 Location: 43°50'-10°27'
|
Posted: Thu Aug 24, 2006 8:44 pm Post subject: |
|
|
xdarma wrote: |
[....]
"CFLAGS=i686" non assomiglia né a -march né a -mtune, e temo non venga accettato da gcc...
Se stai meditando di aggiungere un disco fisso al K7, compilare una gentoo in background, staccare il disco e riavviare su un Pentium3, ALLORA effettivamente puoi impostare al massimo -march=i686 senza definire -mtune. Puoi aggiungere anche -mmmx. Ci sarebbe anche -msse che è supportata da tutti i Pentium3 ma non da tutti i K7 e da nessun K6, quindi controlla le estensioni dei processori che usi prima di impostare le CFLAGS.
Diciamo che forse hai le idee chiare ma non si vede a colpo d'occhio |
Si, hai ragione ma nel voler abbreviare il "concetto" ho fatto nascere la confusione, intendevo dire -march=i686.
Perfetto è tutto chiaro...... fin quì ! TNX !
----- |
|
Back to top |
|
|
|