FLAGS para “compilação segura” com GCC 3.X
janeiro 25, 2007 às 2:15 pm | Publicado em linux, nerdices, tecnologia | 11 Comentários
Muita gente ouve falar sobre recompilar algum software otimizado para a sua CPU, mas não faz a mínima idéia do que se trata. Nesse artigo explicarei um pouco sobre como funciona a compilação usando” FLAGS” para otimizar o software.
Primeiro vamos aos pré-requisitos:
Ter o kernel otimizado para a arquitetura do seu processador e saber quais são as FLAGs a utilizar.
Para saber a versão de GCC, digite:
$ gcc –version
Para saber informação sobre o processador:
$ cat /proc/cpuinfo
Algumas informações sobre as FLAGs:
Quando vc usa, por exemplo a FLAG “-march=athlon-xp -O3 -pipe -fomit-frame-pointer”
Você está informando ao compilador que o seu processador é um athlon-XP (-march=athlon-xp), que vc está querendo otimização máxima (-03), e que o uso de frame pointer não é necessário (-fomit-frame-pointer)
-O1 otimização leve
-O2 otimização segura
-O3 otimização extrema
PS: muitos softwares são compilados com a opção -02 pois é uma otimização segura.
Para mais informações sobre as funções de otimização veja o site
http://docs.freebsd.org/info//gcc/gcc.info.Optimize_Options.html
Para maiores informações sobre outras opções recomendo a leitura do manual do GCC:
$ man gcc
Escolha as FLAGs para o seu processador segundo a lista: http://wiki.gentoo.org/wiki/Safe_CFLAGS
i386 (Intel)
CHOST=”i386-pc-linux-gnu”
CFLAGS=”-march=i386 -O3 -pipe -fomit-frame-pointer”
CXXFLAGS=”-march=i386 -O3 -pipe -fomit-frame-pointer”
Compilar um Software usando FLAGs é muito simples, basta escolher a FLAG e usá-la na compilação.
Baixe o source do software e descompacte-o:
Para source em tar.gz:
tar -xzvf source.tar.gz
Para source em tar.bz2:
tar -xjvf source.tar.bz2
Entre no diretório descompactado, leia os READMEs e rode o ./configure com a FLAG:
PS: eu tenho um processador AthlonXP 2600+
CHOST=”i686-pc-linux-gnu” \
CFLAGS=”-march=athlon-xp -O3 -pipe -fomit-frame-pointer” \
CXXFLAGS=”-march=athlon-xp -O3 -pipe -fomit-frame-pointer” \
./configure
depois rode o $ make && make install
Pronto! você tem o software compilado e instalado para o seu pc.
Caso utilize a distribuição Slackware Linux siga as instruções abaixo para compilar o software otimizado e empacotar o software em um TGZ.
Crie um arquivo config.list, contendo todas as opções de configuração do software:
$ ./configure –help > config.list
$ vi config.list
Escreva o seu arquivo de configuração seguindo o exemplo:
CHOST=”i686-pc-linux-gnu” \
CFLAGS=”-march=athlon-xp -O3 -pipe -fomit-frame-pointer” \
CXXFLAGS=”-march=athlon-xp -O3 -pipe -fomit-frame-pointer” \
./configure \
–prefix=/usr \
–exec-prefix=/usr \
Agora, execute a configuração do código-fonte:
$ sh config.list
Agora, é hora de compilar. Para isso execute o comando:
$ make
Crie um diretório temporário para armazenar os arquivos que serão usados para a criação do pacote do Slackware:
$ mkdir /tmp/coffnix-slackware
Agora, execute a instalação para o diretório temporário:
$ su root
# DESTDIR=/tmp/coffnix-slackware make install
# cd /tmp/coffnix-slackware
Criando o script de instalação
Feito isso, crie o diretório install, onde serão colocados os arquivos de instalação
do pacote:
# mkdir install
Agora, crie e edite o arquivo doinst.sh, dentro do diretório install, que conterá os procedimentos a serem executados após a instalação do pacote:
# vi install/doinst.sh (substitua “vi” pelo editor de sua preferência)
Insira o seguinte conteúdo:
/sbin/ldconfig
Salve o arquivo e feche-o. Esse script será executado após a instalação do pacote.
Agora, crie e edite o arquivo slack-desc, que conterá as informações sobre o pacote, exibidas no momento da instalação:
# vi install/slack-desc
Insira o seguinte conteúdo:
coffnix: [nome do software]
coffnix:
coffnix: [descrição do software]
coffnix:
coffnix: [site, email ou qualquer informação sobre o desenvolvedor do software]
coffnix:
Salve o arquivo e feche-o, e está feito.
Agora, basta criar o pacote com o comando makepkg. Cuidado com o nome do pacote. Ele deve ser formado da seguinte forma:
# makepkg -c n -l n [nome]-[versão]-[arquitetura]-[revisão].tgz
Pronto!!! Você acaba de criar um pacote para o Slackware de um software otimizado para o seu processador.
Agora basta instalar o pacote ou atualizá-lo:
#installpkg pacote.tgz
#upgradepkg –install-new pacote.tgz
Seja feliz 😀
11 Comentários »
RSS feed for comments on this post. TrackBack URI
Deixe um comentário
Crie um website ou blog gratuito no WordPress.com.
Entries e comentários feeds.
ae mago…
fino o artigo XD
issae
Comment by tudela(cast)— janeiro 25, 2007 #
pots, esse post ficou show de bola, realmente muito util, alias esta cada dia mais dificil achar textos realmente uteis na internet que infelizmente a cada dia tem mais lixo, muito bom brow !!!
Comment by B3t0_cyber_punk— janeiro 25, 2007 #
Não é atoa que te chamam de mago
Tudo oq vc faz faz com perfeição…
Que D’us continue te dando sabedoria
Fuiiiiiiiiiiiiiiiiii
Comment by Almeidinha— janeiro 25, 2007 #
boa chemonz.
legal publicar isso, eh um assunto que muita gente tem duvida e ver uma explicacao pratica desse jeito eh fantastico!
e de quebra, ainda ensinou a criar pacutin TGZ!
Comment by tzbishop2k— janeiro 26, 2007 #
Cara, demais esse artigo.
Mas ficou uma dúvida:
Meu processador é um Celeron D, devo usar as flags do Willamette ou as do Pentium 4?
Fora isso, tudo foi muito bem explicado.
Parabéns!!!
Comment by Gilson de Elt— março 17, 2007 #
Gilson, vc deve usar as flags do williamete:
Celeron (Willamette?) (Intel)
CHOST=”i686-pc-linux-gnu”
CFLAGS=”-march=pentium4 -O3 -pipe -fomit-frame-pointer”
CXXFLAGS=”-march=pentium4 -O3 -pipe -fomit-frame-pointer”
Comment by tzbishop2k— março 17, 2007 #
o meu é um AMD Sempron 3000+ 2GHz, 512KB de Cache L2.
até onde sei, o meu é o Sempron Barton.
qual eu deveria usar?
Comment by Eduardo— abril 8, 2007 #
eduardo, tente usar essas…. se der pau use uma de sempron. Mas acredito q vai dar de boa.
CHOST=”i686-pc-linux-gnu”
CFLAGS=”-march=athlon-xp -O2 -pipe -fomit-frame-pointer”
CXXFLAGS=”-march=athlon-xp -O2 -pipe -fomit-frame-pointer”
Comment by ChemonZ— abril 8, 2007 #
Grande mago, salve sua sabedoria!!!
adorei o artigo, é de uma “mestria” tremenda!
abraços e continue assim, ensinando aos simples mortais
Comment by Denis— maio 22, 2007 #
Porfavor, gostaria de saber qual os flags para o meu intem celeron d.
model name : Intel(R) Celeron(R) D CPU 3.20GHz
Ele é de 64bit.
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 pni monitor ds_cpl cid cx16 xtpr lahf_lm
Obrigado.
Comment by Leonardo Vilar— novembro 25, 2007 #
pra saber a lista atualizada pra gcc4
http://gentoo-wiki.com/Safe_Cflags
abraços
Comment by chemonz— outubro 17, 2008 #