Pagina 1 di 2

Slack.built

Inviato: mer 29 giu 2005, 15:30
da pennega
ho scaricato i sorgenti di X ho fatto una modifichina allo slackbuilt

Codice: Seleziona tutto

VERSION=6.8.2
export ARCH=${ARCH:-athlonxp}
BUILD=${BUILD:-1pk}

if [ "$ARCH" = "i386" ]; then
  SLKCFLAGS="-O2 -march=i386 -mcpu=i686"
elif [ "$ARCH" = "i486" ]; then
  SLKCFLAGS="-O2 -march=i486 -mcpu=i686"
elif [ "$ARCH" = "s390" ]; then
  SLKCFLAGS="-O2"
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"
fi
.................
ho modificato la variabile ARCH e ho aggiunto all' if la parte x l'archittetura che ho impostato...
mi sorge un dubbio... continuando a leggere lo slackbuilt trovo
............................................
( cd extras/freetype2
CFLAGS="$SLKCFLAGS" make setup CFG="--prefix=/usr $ARCH-slackware-linux"
make
# This only needs to go to the main system for now
make install
)
ldconfig
...............................
il fatto è che nel mio sistema trovo solo una dir che porta dicitura i486-slackware-linux ma non una athlonxp-slackware-linux... questo vorrebe dire che devo ricompilare anche gcc e le libc con questa arch???
o posso fare un link a quella che ho???

Inviato: gio 30 giu 2005, 8:18
da salbutamolo
Ciao,
lascia perdere le modifiche ad "arch" lascia i486.....c'è un post a riguardo che spiega molto bene il motivo di questa scelta...cercalo perchè la questione è lunghetta. Se vuoi ottimizzare per la tua architettura modifica solo le cflags relative all'architetettiura i486, poi lanci lo sclakbuild e alla fine, semplicemente, rinomini i pacchetti come vuoi tu! Have a nice day

Inviato: gio 30 giu 2005, 13:27
da useless
il fatto è che gli slackbuild ERRONEAMANETE usano l'ARCH come target. la cosa migliore che mi viene in mente sarebbe aggiungere una nuova variabile TARGET e lasciarla =i486 e nei make, sostituire $ARCH-slackware-linux con $TARGET-slackware-linux.

Inviato: gio 30 giu 2005, 18:12
da pennega
ok grazie x le risposte...
penso che farò come ha detto useless anche xchè ho visto che lo slack.built di kde fà proprio così... usa una variabile $ARCH e una variabile $TARGET...

mi è giunta voce che gcc nonn suporta l'arch athlon-xp voi sapate qualcosa in merito???

Inviato: gio 30 giu 2005, 18:47
da samiel
il fatto è che gli slackbuild ERRONEAMANETE usano l'ARCH come target. la cosa migliore che mi viene in mente sarebbe aggiungere una nuova variabile TARGET e lasciarla =i486 e nei make, sostituire $ARCH-slackware-linux con $TARGET-slackware-linux.
Spiegaci bene sta cosa...
O c'è qualche sito illuminante ?

Grazie
M.

Inviato: gio 30 giu 2005, 22:55
da useless
il fatto è che l'arch viene utilizzata negli slackbuild + nuovi x impostare i cflags, ma anche x individuare il compilatore, quando questo scopo apparterrebbe al target. infatti un compilatore unico (un target insomma, tipo i486) può generare codice x diverse arch (i486, i686, athlon-xp, ecc...). quindi la cosa migliore è avere 2 variabili, eventualmente con target che assume valori uguali o diversi a seconda di arch: se arch=i386, i486, ecc... arch vale sempre e comunque i486, se poi uno ha tipo un crosscompiler x sparc (come me :D) può avere un arch supersparc che imposta un target sparc, ad esempio.
spero di essere stato chiaro! :idea:

Inviato: gio 30 giu 2005, 23:28
da Loris
Direi che è giusto e sensato.

Inviato: ven 1 lug 2005, 0:25
da samiel
Azz... e io che pensavo che Hegel fosse lo scrittore
più ermetico... Pertanto che cosa metteresti
nello SlackBuild? Così vedo come viene fuoti
in pratica...

Grazie
M.

Inviato: ven 1 lug 2005, 0:34
da samiel
Tipo una cosa del genere (appema trovata in rete)?

CFLAGS="-O3 -march=i686 -mcpu=i686" \
./configure --target=alpha-pc-linux-gnu \
--prefix=/usr/bin \
--program-prefix="" \
--program-suffix="" \
$ARCH-slackware-linux

Ma a questo punto si conserva l'ultima riga? E dove
trovo le variabili? Se ad es intendo compilare per un i686?

--target=i686-pc-linux-gnu

o cos'altro? Da ultimo:
dove trovo ste cose? bibliografia per aprofondimenti,
compito per le vacanze...

Grazie
M.

Inviato: ven 1 lug 2005, 1:00
da samiel
Altra domanda... e faccio i link a ccache mettendo
ln -s /usr/bin/ccache i686-slackware-linux-gc
invece di i486, se do un make mi salta fuori:
checking for i686-slackware-linux-gcc... i686-slackware-linux-gcc
checking for C compiler default output file name... configure: error: C compiler cannot create executables
See `config.log' for more details.
Per cui c'è qualche inghippo...

M.

Inviato: ven 1 lug 2005, 7:35
da Loris
Una roba simile:

Codice: Seleziona tutto

TARGET=$i486
ARCH=${ARCH:-i486}
BUILD=1sl

if [ "$ARCH" = "i486" ]; then
  SLKCFLAGS="-O2 -march=i486 -mcpu=i686"
elif [ "$ARCH" = "i686" ]; then
  SLKCFLAGS="-O2 -march=i686 -mcpu=i686"
elif [ "$ARCH" = "x86_64" ]; then
  SLKCFLAGS="-O2"
fi
.
.
.
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure --prefix=/usr \
--program-prefix="" \
--program-suffix="" \
$TARGET-slackware-linux
make
make install DESTDIR=$PKG

Inviato: ven 1 lug 2005, 9:53
da useless
ok, non sono stato chiaro :). xò ci hai preso, e a quel punto l'ultima riga non ha + molto senso (in realtà ne ha: dovresti specificare anche --host e --build. in effetti se ci hai fatto caso, spesso configure avverte "warning: you should use --target..."). comunque fai molto prima come ha detto lorys, con un solo appunto:
TARGET=i486, senza $
:)

Inviato: ven 1 lug 2005, 12:42
da Loris
Si certo alle 7.35 ancora dormivo :)

Inviato: ven 1 lug 2005, 16:05
da samiel
Allora, per fare un po' di ordine...

System types:
--build=BUILD configure for building on BUILD [guessed]
--host=HOST cross-compile to build programs to run on HOST [BUILD]
--target=TARGET configure for building compilers for TARGET [HOST]

Se voglio fare un pacchetto e non mi serve il cross-compiling (ho trovato un how-to sul tema)
e devo farlo sul mio i686 per il mio 686,
build host e target dovrebbero risultare uguali...
Giusto oppure ho sbagliato tutto?

M.

Inviato: ven 1 lug 2005, 16:09
da useless
giusto, infatti specificare $ARCH-slackware-linux alla fine delle opzioni ha proprio quell'effetto.

anche se credo che ormai tu abbia capito, ricapitolo:
- build -> macchina sulla quale si compila
- host -> macchina su cui girerà il programma compilato
- target -> macchina x cui il compilatore compilato creerà codice. in effetti non è molto utile x ciò che non è un compilatore.