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

  1. ae mago…

    fino o artigo XD

    issae

  2. 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 !!!

  3. Não é atoa que te chamam de mago
    Tudo oq vc faz faz com perfeição…
    Que D’us continue te dando sabedoria
    Fuiiiiiiiiiiiiiiiiii

  4. 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!

  5. 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!!!

  6. 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”

  7. o meu é um AMD Sempron 3000+ 2GHz, 512KB de Cache L2.
    até onde sei, o meu é o Sempron Barton.

    qual eu deveria usar?

  8. 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”

  9. Grande mago, salve sua sabedoria!!!

    adorei o artigo, é de uma “mestria” tremenda!
    abraços e continue assim, ensinando aos simples mortais

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

  11. pra saber a lista atualizada pra gcc4

    http://gentoo-wiki.com/Safe_Cflags

    abraços


Deixe um comentário

Crie um website ou blog gratuito no WordPress.com.
Entries e comentários feeds.