Impostare compilatori

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
zacmarco
Linux 0.x
Linux 0.x
Messaggi: 34
Iscritto il: gio 9 giu 2005, 0:00
Località: Foggia

Impostare compilatori

Messaggio da zacmarco »

Ciao ragazzi!
Ho due domandine sull' HOSTTYPE e sul MACHTYPE.
Immagino che tali variabili d'ambiente vengano usate dai compilatori per stabilire per e su quale architettura compilare.
Le domande sono:

1) E' proprio così che si dice a GCC come compilare. Se io cambio tali variabili riesco a fare una cross-compilazione?
1) settando queste variabili, le impostazioni immagino verranno usate ad es. da GCC. Ma se io compilo un sorgente scaricato da internet e creato con gli autotools (in cui si specifica ANCHE l'architettura ospite e target), chi prevale?

Grazie mille ragazzi!

Avatar utente
gioco
Packager
Packager
Messaggi: 900
Iscritto il: dom 19 giu 2005, 0:00
Slackware: last stable
Località: in the court of the Wesnoth king
Contatta:

Re: Impostare compilatori

Messaggio da gioco »

zacmarco ha scritto:Ho due domandine sull' HOSTTYPE e sul MACHTYPE.
Immagino che tali variabili d'ambiente vengano usate dai compilatori per stabilire per e su quale architettura compilare.
Non è così.

Codice: Seleziona tutto

man bash
zacmarco ha scritto:1) E' proprio così che si dice a GCC come compilare. Se io cambio tali variabili riesco a fare una cross-compilazione?
No, hai bisogno di un cross compiler. Qui [1] trovi una guida per costruire un cross compiler per PPC.

[1] http://www.cs.duke.edu/~irwin/gcc_ppc.html

zacmarco
Linux 0.x
Linux 0.x
Messaggi: 34
Iscritto il: gio 9 giu 2005, 0:00
Località: Foggia

Messaggio da zacmarco »

Ciao grazie per la risposta.
In realtà il mio scopo non è quello di metter su una toolchain di cross-compilazione (in realtà devo fare anche quello).
Più che altro voglio capire come manipolare le impostazioni di GCC. un esempio banale è quello di fare in modo che ogni compilazione sul mio ATHLON XP venga ottimizzata per questa architettura e non per il generico x86, senza dover indicarlo ogni volta a "configure". O in genere, anche se non sto compilando da un pacchetto sorgente, ma semplicemente invocando GCC, vorrei utilizzare il codice ottimizzato per la mia architettura.
Poi c'è la questione della cross-compilazione. So ovviamente che cambiando completamente architettura (es x86 -> PPC) devo cambiare compilatore (e usarne uno "cross"). Quella è un'altra storia.
Grazie mille!

Avatar utente
albatros
Iper Master
Iper Master
Messaggi: 2098
Iscritto il: sab 4 feb 2006, 13:59
Kernel: 6.18.0
Desktop: gnome and lxqt
Distribuzione: Ubuntu 24.04 & FC 41
Località: Darmstadt - Germania

Messaggio da albatros »

Da
http://gcc.gnu.org/install/configure.html
--with-cpu=cpu
Specify which cpu variant the compiler should generate code for by default. cpu will be used as the default value of the -mcpu= switch. This option is only supported on some targets, including ARM, i386, M68k, PowerPC, and SPARC.
--with-schedule=cpu
--with-arch=cpu
--with-tune=cpu
--with-abi=abi
--with-fpu=type
--with-float=type
These configure options provide default values for the -mschedule=, -march=, -mtune=, -mabi=, and -mfpu= options and for -mhard-float or -msoft-float. As with --with-cpu, which switches will be accepted and acceptable values of the arguments depend on the target.
Questa è una possibilità se ti compilii da solo il compilatore.

Altrimenti puoi usare degli alias tipo (questi sono quelli che uso io):

alias gcc='gcc -mfpmath=sse -msse2 -m3dnow -march=athlon-xp -pipe -O2'

alias konf='CFLAGS='\''-mfpmath=sse -msse2 -msse3 -m3dnow -march=athlon-xp -pipe -O2'\'' CXXFLAGS='\''-mfpmath=sse -msse2 -msse3 -m3dnow -march=athlon-xp -pipe -O2'\'' ./configure

oppure puoi fare uno scriptino che lanci gcc con le opzioni che vuoi...

Per fare cross compiling avrai bisogno anche delle librerie per la piattaforma target...
Ma, come hai già detto, è un'altra storia...

:)

zacmarco
Linux 0.x
Linux 0.x
Messaggi: 34
Iscritto il: gio 9 giu 2005, 0:00
Località: Foggia

Messaggio da zacmarco »

Ok!
Si certo, quella degli alias è una buona possibilità. Però pensavo si potesse (tramite qualche var di ambiente o qualche file di conf) configurare il target di default della mia compilazione. Dopo tutto se (non so per quale motivo) dovessi compilare per un x86 base, dovrei eliminare l'alias (o ribadire gli argomenti a GCC, ma poi non so se funzionerebbe).

comunque per la cross-comp per ora sto lavorando su una toolchain già pronta (quella della scheda FOX...), ma prima o poi vorrò mettere le mani direttamente sul codice da ZERO (in modo da piantare la scheda una volta per tutte :) ).
Meno male che la FOX si salva con un'altra FOX...

Grazie ancora per l'aiuto

Rispondi