Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
CFLAGS ... ancora qualche dubbio.
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) Forum di discussione italiano
View previous topic :: View next topic  
Author Message
tocas
Apprentice
Apprentice


Joined: 01 Jan 2004
Posts: 280
Location: 43°50'-10°27'

PostPosted: Sat Aug 19, 2006 2:22 pm    Post subject: CFLAGS ... ancora qualche dubbio. Reply with quote

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
View user's profile Send private message
randomaze
Bodhisattva
Bodhisattva


Joined: 21 Oct 2003
Posts: 9985

PostPosted: Sat Aug 19, 2006 2:51 pm    Post subject: Re: CFLAGS ... ancora qualche dubbio. Reply with quote

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
View user's profile Send private message
tocas
Apprentice
Apprentice


Joined: 01 Jan 2004
Posts: 280
Location: 43°50'-10°27'

PostPosted: Sat Aug 19, 2006 3:32 pm    Post subject: Reply with quote

Come non ci sono... questi sono le due CPU che hanno
Code:
-march=i686


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 :oops: 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
View user's profile Send private message
randomaze
Bodhisattva
Bodhisattva


Joined: 21 Oct 2003
Posts: 9985

PostPosted: Sat Aug 19, 2006 3:44 pm    Post subject: Reply with quote

tocas wrote:
Come non ci sono... questi sono le due CPU che hanno
Code:
-march=i686


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
View user's profile Send private message
tocas
Apprentice
Apprentice


Joined: 01 Jan 2004
Posts: 280
Location: 43°50'-10°27'

PostPosted: Sat Aug 19, 2006 4:13 pm    Post subject: Reply with quote

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
View user's profile Send private message
xdarma
l33t
l33t


Joined: 08 Dec 2003
Posts: 719
Location: tra veneto e friuli (italy)

PostPosted: Tue Aug 22, 2006 6:15 am    Post subject: Reply with quote

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
View user's profile Send private message
tocas
Apprentice
Apprentice


Joined: 01 Jan 2004
Posts: 280
Location: 43°50'-10°27'

PostPosted: Wed Aug 23, 2006 12:45 pm    Post subject: Reply with quote

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
:roll: :roll:

... 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
View user's profile Send private message
xdarma
l33t
l33t


Joined: 08 Dec 2003
Posts: 719
Location: tra veneto e friuli (italy)

PostPosted: Wed Aug 23, 2006 1:24 pm    Post subject: Reply with quote

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
View user's profile Send private message
tocas
Apprentice
Apprentice


Joined: 01 Jan 2004
Posts: 280
Location: 43°50'-10°27'

PostPosted: Thu Aug 24, 2006 3:34 pm    Post subject: Reply with quote

....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:

....
Back to top
View user's profile Send private message
xdarma
l33t
l33t


Joined: 08 Dec 2003
Posts: 719
Location: tra veneto e friuli (italy)

PostPosted: Thu Aug 24, 2006 8:35 pm    Post subject: Reply with quote

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
View user's profile Send private message
tocas
Apprentice
Apprentice


Joined: 01 Jan 2004
Posts: 280
Location: 43°50'-10°27'

PostPosted: Thu Aug 24, 2006 8:44 pm    Post subject: Reply with quote

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, :oops: 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
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) Forum di discussione italiano All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum