Compilazione specifica

Postate qui se avete consigli per migliorare i pacchetti disponibili in questo sito o se avete problemi con installazione, funzionamento o altro.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il nome del pacchetto.
2) Specificare se discussione/suggerimento o richiesta d'aiuto.
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
Avatar utente
Yellowhat
Linux 2.x
Linux 2.x
Messaggi: 218
Iscritto il: mer 26 dic 2007, 16:58
Slackware: Current
Località: Modena

Compilazione specifica

Messaggio da Yellowhat »

Ciao a tutti, vorrei adattare slackware al mio hardware, perciò ho già ricompilato il kernel specificando il mio processore ed eliminando cose superflue.
Ma volevo rendere anche i pacchetti che installo specifici compilandoli con checkinstall.
Sono già riuscito a compilare diversi pacchetti attraverso:

Codice: Seleziona tutto

bash-3.1# ./configure

Codice: Seleziona tutto

bash-3.1# make

Codice: Seleziona tutto

bash-3.1# checkinstall
Il pacchetto viene creato e funziona benissimo, ma vorrei aggiungere degli argomenti a ./configure, dove li trovo?
Lanciando

Codice: Seleziona tutto

bash-3.1# gcc -v
Reading specs from /usr/lib/gcc/i486-slackware-linux/4.2.3/specs
Target: i486-slackware-linux
Configured with: ../gcc-4.2.3/configure --prefix=/usr --enable-shared --enable-languages=ada,c,c++,fortran,java,objc --enable-threads=posix --enable-__cxa_atexit --disable-checking --with-gnu-ld --verbose --with-arch=i486 --target=i486-slackware-linux --host=i486-slackware-linux
Thread model: posix
gcc version 4.2.3
Posso utilizzare quegli stessi argomenti o altri più specifici?

Avatar utente
414N
Iper Master
Iper Master
Messaggi: 2924
Iscritto il: mer 13 feb 2008, 16:19
Slackware: 15.0
Kernel: 5.15.19
Desktop: KDE5
Località: Bulagna
Contatta:

Re: Compilazione specifica

Messaggio da 414N »

Prima di lanciare il configure, puoi (probabilmente, dipende dal programma) ridefinire alcune variabili d'ambiente, come le CFLAGS.
Queste permettono di fornire al compilatore flags di ottimizzazione specifiche per la tua architettura.
Qui trovi un elenco di CFLAGS sicure (safe) per le varie architetture. STAI ATTENTO! Non esagerare specificando tanti flags e/o ottimizzazioni estreme, in quanto potresti compromettere il normale funzionamento del programma/libreria che vai a compilare.

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

Re: Compilazione specifica

Messaggio da albatros »

Quando compili qualcosa, ti consiglio intanto di leggere i file README e INSTALL, se presenti (ci sono quasi sempre): a volte sono standard e non ti dicono niente di speciale, ma a volte contengono informazioni utili.
Per un elenco delle opzioni possibili con configure, prova ./configure --help .

Avatar utente
Yellowhat
Linux 2.x
Linux 2.x
Messaggi: 218
Iscritto il: mer 26 dic 2007, 16:58
Slackware: Current
Località: Modena

Re: Compilazione specifica

Messaggio da Yellowhat »

Allora per fare un esempio così può andare come inizio:
# CFLAGS="-O2 -march=athlon -msse3 -pipe -fomit-frame-pointer -j3" ./configure --prefix=/usr --disable-debug

Codice: Seleziona tutto

bash-3.1$ cat /proc/cpuinfo
processor	: 0
vendor_id	: AuthenticAMD
cpu family	: 15
model		: 107
model name	: AMD Athlon(tm) 64 X2 Dual Core Processor 5000+
stepping	: 2
cpu MHz		: 2600.000
cache size	: 512 KB
physical id	: 0
siblings	: 2
core id		: 0
cpu cores	: 2
fdiv_bug	: no
hlt_bug		: no
f00f_bug	: no
coma_bug	: no
fpu		: yes
fpu_exception	: yes
cpuid level	: 1
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy 3dnowprefetch ts fid vid ttp tm stc 100mhzsteps
bogomips	: 5214.95
clflush size	: 64

processor	: 1
vendor_id	: AuthenticAMD
cpu family	: 15
model		: 107
model name	: AMD Athlon(tm) 64 X2 Dual Core Processor 5000+
stepping	: 2
cpu MHz		: 2600.000
cache size	: 512 KB
physical id	: 0
siblings	: 2
core id		: 1
cpu cores	: 2
fdiv_bug	: no
hlt_bug		: no
f00f_bug	: no
coma_bug	: no
fpu		: yes
fpu_exception	: yes
cpuid level	: 1
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy 3dnowprefetch ts fid vid ttp tm stc 100mhzsteps
bogomips	: 5211.84
clflush size	: 64
Mi potreste anche spiegare le differenze tra Makepkg, Slackbuild e Checkinstall?
Grazie a tutti

Mario Vanoni
Iper Master
Iper Master
Messaggi: 3174
Iscritto il: lun 3 set 2007, 21:20
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey
Località: Cuasso al Monte (VA)

Re: Compilazione specifica

Messaggio da Mario Vanoni »

Yellowhat ha scritto:Allora per fare un esempio così può andare come inizio:
# CFLAGS="-O2 -march=athlon -msse3 -pipe -fomit-frame-pointer -j3" ./configure --prefix=/usr --disable-debug
Domanda: perche', e che giova/serve -j 3?

make -j numero_dei_processori_attivi

funziona con il kernel perche' ha un Makefile capace di farlo,
con due processori -j 3 e` piu` lento di -j 2.

Con una software senza Makefile predisposto,
l'opzione -j n e` pura illusione e rallenta tutto.
E` il Makefile che dispone compilazioni in parallelo!

Mario Vanoni

Avatar utente
Harp
Staff
Staff
Messaggi: 1424
Iscritto il: sab 17 apr 2004, 0:00
Nome Cognome: Franco Fiorin
Slackware: 13.0
Kernel: 2.6.29
Desktop: KDE 4.2.4
Località: Vittorio Veneto (TV)
Contatta:

Re: Compilazione specifica

Messaggio da Harp »

Mi collego a questo thread, visto che l'argomento trattato è quello che mi interessa.

Volendo ricompilare MPlayer, volevo chiedere se in base al mio processore:
cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 15
model name : Intel(R) Pentium(R) Dual CPU E2180 @ 2.00GHz
stepping : 13
cpu MHz : 1995.009
cache size : 1024 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 2
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts pni monitor ds_cpl est tm2 ssse3 cx16 xtpr lahf_lm
bogomips : 3993.06
clflush size : 64

processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 15
model name : Intel(R) Pentium(R) Dual CPU E2180 @ 2.00GHz
stepping : 13
cpu MHz : 1995.009
cache size : 1024 KB
physical id : 0
siblings : 2
core id : 1
cpu cores : 2
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts pni monitor ds_cpl est tm2 ssse3 cx16 xtpr lahf_lm
bogomips : 3990.00
clflush size : 64
Su http://gentoo-wiki.com/Safe_Cflags#Inte ... Core_Txxxx, ho trovato queste FLAGS:
Intel Core Solo/Duo, Pentium Dual-Core Txxxx
vendor_id : GenuineIntel
cpu family : 6
model : 14, 22
model name : Genuine Intel(R) CPU TXXXX @ XXXGHz
model name : Intel(R) Celeron(R) CPU 220 @ 1.20GHz
model name : Intel(R) Celeron(R) CPU 4X0 @ XXXGHz

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=prescott -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

Notes:
It has been confirmed by hongjiu.lu@intel.com that prescott is the correct microarchitecture to use with this CPU. http://article.gmane.org/gmane.comp.gcc.devel/83870
The newer (eg. 420) Celeron-M processors are Core Solo based, not Pentium-M based. If your processor's family and model are 6 and 14, then you should use the -march=prescott option.
Both the Celeron 4x0 and 220 run fine with Processor family (Pentium M) selected in the kernel.
[edit] Intel Core 2 Duo/Quad / Xeon 51xx/53xx, Pentium Dual-Core Exxxx
vendor_id : GenuineIntel
cpu family : 6
model : 15
model name : Intel(R) Core(TM)2 CPU XXXX @ XXXGHz

32 bit profile (x86)
CHOST="i686-pc-linux-gnu"
CFLAGS="-march=prescott -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

64 bit profile (amd64)
CHOST="x86_64-pc-linux-gnu"
CFLAGS="-march=nocona -O2 -pipe"
CXXFLAGS="${CFLAGS}"

Note:
GCC 4.3 has -march=core2[1]
Per cui la parte dello Slackbuid che tratta questo aspetto l'ho modificato così:
CWD=`pwd`
TMP=${TMP:-/tmp/tgz}
PKG=$TMP/package-mplayer
NAME=mplayer
VERSION=1.0rc2try1
SVERSION=1.0rc2
ARCH=${ARCH:-i686}
BUILD=Hrp
SKIN=KDE
SKINV=0.3
FONT=font-arial-iso-8859-1

SOURCE=http://www1.mplayerhq.hu/MPlayer/releas ... ON.tar.bz2

if [ ! -e $CWD/MPlayer-$SVERSION.tar.bz2 ]; then
wget -c $SOURCE
fi

if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686 -fomit-frame-pointer"
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-march=prescott -O2 -pipe -fomit-frame-pointer"
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2"
elif [ "$ARCH" = "athlonxp" ]; then
SLKCFLAGS="-march=athlon-xp -O3 -pipe -fomit-frame-pointer -ffast-math -mmmx -m3dnow -msse -mfpmath=sse,387"
fi
Può andare bene?

P.S. Mario, ho visto anche in altri thread che hai trattato il discorso inerente al numero dei processi.
Cosa mi suggerisci nel mio caso?

Grazie in anticipo.

Ciao

Mario Vanoni
Iper Master
Iper Master
Messaggi: 3174
Iscritto il: lun 3 set 2007, 21:20
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey
Località: Cuasso al Monte (VA)

Re: Compilazione specifica

Messaggio da Mario Vanoni »

Harp ha scritto:Mi collego a questo thread, visto che l'argomento trattato è quello che mi interessa.

P.S. Mario, ho visto anche in altri thread che hai trattato il discorso inerente al numero dei processi.
Cosa mi suggerisci nel mio caso?
solo make semplice per MPlayer,
improbabile che il suo Makefile preveda lavorazione parallela

make -j 2 per il kernel,
il suo Makefile e` predisposto per la compilazione parallela

Avatar utente
414N
Iper Master
Iper Master
Messaggi: 2924
Iscritto il: mer 13 feb 2008, 16:19
Slackware: 15.0
Kernel: 5.15.19
Desktop: KDE5
Località: Bulagna
Contatta:

Re: Compilazione specifica

Messaggio da 414N »

Harp ha scritto: Può andare bene?
Direi di sì. Prova a generare il pacchetto e vedere se funziona tutto correttamente, una volta installato.

Rispondi