Logo Hardware.com.br
Dan Jacques
Dan Jacques Zumbi Registrado
9.8K Mensagens 254 Curtidas

Como compilar otimizando – Veja aqui!

#1 Por Dan Jacques 15/06/2007 - 01:44
Compile seus programas otimizando como no Gentoo!



Um dos grandes segredos (se não for o maior) do Gentoo Linux ser tão rápido é justamente a capacidade de ele poder ser otimizado especialmente para sua máquina, um Linux sob medida para sua máquina.


Isso é possível fazer mesmo sem usar o Gentoo! É um procedimento não muito complicado, na verdade é bem simples em relação ao impacto positivo que ele causa no desempenho do programa a ser compilado.


Esse recurso que o Gentoo usa se chama Flags. Traduzindo para o português, significa literalmente “bandeira”, ou seja, você mostra a “bandeira” do seu processador, e o compilador constrói o programa especialmente para ele!
Para encontrar as otimizações, você entra na página de Flags do Gentoo: http://gentoo-wiki.com/Safe_Cflags
Escolha o seu processador e copie as Flags dele (as três linhas, CHOST, CFLAGS e CXXFLAGS). Para cada processador existem três linhas com elas.

Copie para algum editor simples de texto, como o Kedit ou Gedit. Agora adicione a seguinte linha, abaixo das flags:
export CHOST CFLAGS CXXFLAGS
Essa linha grava na memória as variáveis criadas pelas Flags, assim o compilador poderá lê-las.
Então, no meu caso, ficaria assim (no seu vai ser diferente, dependendo do seu processador):
 CHOST="i686-pc-linux-gnu"
CFLAGS="-march=prescott -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"
export CHOST CFLAGS CXXFLAGS
Ok, temos agora tudo pronto para a compilação. Sempre que você for compilar, você, antes do ./configure, cola essas linhas que fizemos com as Flags no terminal, e aí sim executa o clássico ./configure, make e make install. Vamos ver um exemplo:
Estou compilando o AmaroK, por exemplo. Eu entro na pasta dele como se fosse compilar:
cd amarok-1.4.4
Então digito as Flags:
 CHOST="i686-pc-linux-gnu"
CFLAGS="-march=prescott -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"
export CHOST CFLAGS CXXFLAGS
E então começo o trabalho de compilação:
./configure
make
su
make install

Lembrando que você precisa fazer isso para cada programa que for compilar. Se você não souber o que é compilação, e quiser mais informação, você pode utilizar a pesquisa do fórum, ela costuma ajudar bastante!

Caso sua máquina tenha dois ou mais processadores, use o parâmetro -j(CPUs) para dividir o trabalho entre elas, reduzindo pela metade, 1/4, 1/8, dependendo do número de CPUs ou cores que você tiver. Ex: o meu Core 2 Duo (dual-core), eu faço assim:
./configure
make -j2
su
make install -j2

Algumas pessoas afirmam obterem melhores resultados usando no -j o dobro de processadores, no caso 4 para dual-core. Fica a seu critério. Não vai fazer mal no produto final, a única coisa que pode acontecer é a compilação demorar um pouco mais, caso você ponha um número errado wink.png.

Pronto!! Seu programa agora rodará otimizado para a sua máquina, resultando em menos consumo de processamento e maior velocidade!!! Bom divertimento!!!
Responder
Dr. Hank
Dr. Hank General de Pijama Registrado
3.7K Mensagens 119 Curtidas
#5 Por Dr. Hank
16/06/2007 - 20:06
Muito interessante esse macete, estou sempre usando.

Para os Arch users: na hora de criar os seus pacotes do AUR (The Arch Build System) adicione no seu /etc/makepkg.conf, que é o arquivo de configurações do makepkg as flags que você quiser:

#########################################################################
# ARCHITECTURE, COMPILE FLAGS
#########################################################################
#
CARCH="i686"
CHOST="i686-pc-linux-gnu"

#-- Exclusive: will only run on i686
# -mtune builds exclusively for an architecture
# -mcpu optimizes for an architecture, but builds for the whole processor family
CFLAGS="-march=prescott -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"
#-- Make Flags: change this for DistCC/SMP systems
MAKEFLAGS="-j2"
Nesse exemplo usei as flags do C2D do Larvitar.

"I am Alpha and Omega, the beginning and the end. I will give unto him that is athirst of the fountain of the water of life freely."

— Revelation 21:6, KJV
MaxRaven
MaxRaven General de Pijama Registrado
4.2K Mensagens 111 Curtidas
#6 Por MaxRaven
17/06/2007 - 00:23
Alguem já viu o compilador grafico Kompile ?
Eu falei dele no meu site, mas não testei, se tivesse uma hd ou partição sobrando ia fazer uns testes, se tiver meios adicionar as opções por ele tbm seria bem interessante para os iniciantes.
[off] oia, o Leite tbm era do forum do Kuruma, o Lavitar eu lembrava de lá, sei que tem uma galera que ficava de papo no antigo offtopic de lá, mas mudaram os nicks hahha[/off]
Jeanks
Jeanks Tô em todas Registrado
2K Mensagens 45 Curtidas
#8 Por Jeanks
17/06/2007 - 03:17
MaxRaven disse:
Alguem já viu o compilador grafico Kompile ?
Eu falei dele no meu site, mas não testei, se tivesse uma hd ou partição sobrando ia fazer uns testes, se tiver meios adicionar as opções por ele tbm seria bem interessante para os iniciantes.
[off] oia, o Leite tbm era do forum do Kuruma, o Lavitar eu lembrava de lá, sei que tem uma galera que ficava de papo no antigo offtopic de lá, mas mudaram os nicks hahha[/off]


[off]
É, era meio que rato lá, mas foi pouco tempo antes do Morimoto acabar com ele. Antigo Fire Tiger. Mas não lembro do off-topic não. Quando eu ia lá o fórum ja tava nas ultimas.
[/off]

Esse kompile, como funciona? Tipo, é só uma interface pro ./configure ficar mais fácil?

Satoshi

[modo gentoo-user on]Hahaha, coisinha inútil... É muito mais fácil jogar no make.conf [modo gentoo-user off]

Muito boa a dica!


[flame]
hehehe Mas mesmo assim não preciso esperar dois dias pro sistema ficar redondo
[/flame]
big_green.png
MaxRaven
MaxRaven General de Pijama Registrado
4.2K Mensagens 111 Curtidas
#9 Por MaxRaven
17/06/2007 - 03:28
[off] o offtopic acabou muito antes do forum começar a entrar nas ultimas, acabaram com ele pq o povo ficava mais tempo no offtopic que ajudado nos problemas, isso era da epoca que o dizinha era beta e nem tinham pensado em fazer o kurumin-games, pra ver quanto tempo foi hahaha[/off]
Então, o kompile é +/- isso mesmo, mas queria uma cobaia pra testar ele, to vendo que vou ter de arrumar outra hd pra criar uma distro de teste pra essas coisas, mas isso acho que é mais voltado pra quem tá iniciando, pq quem tem um pouco de intimidade com o terminal talvez prefira ele mesmo.
Edit - acabei de descobrir que quem desenvolve o kompile tbm desenvolve o YAPG - Yet Another Pacman GUI e o ALDM - Arch Linux Daemons Manager, daqui a pouco o arch vai estar cheio de janelinhas novas hahahha
Jeanks
Jeanks Tô em todas Registrado
2K Mensagens 45 Curtidas
#10 Por Jeanks
17/06/2007 - 08:27
Se eu usasse o KDE ( pelo jeito esse programa é para KDE né? ) eu testaria aqui.
Como vc disse, pra gente que é acostumado com terminal, tanto faz, ou é até melhor o terminal do que interface. Mas para "enganar"(não sei se essa é a palavra correta ) alguem iniciando que odeia terminal, é uma boa idéia.

Poh, eu perdi o bar do GDH ( pelo que vi parece que o negócio era bom ) e perdi o off-topic. Mas aqui até intendo pq se for fazer o pessoal em vez de fazer zueira deve ficar em ondinha de Win x Lin, AMD x Intel, Nvidia X ati etc.
MaxRaven
MaxRaven General de Pijama Registrado
4.2K Mensagens 111 Curtidas
#11 Por MaxRaven
17/06/2007 - 08:48
é tudo pra KDE mesmo, é que eu uso e acabei descobrindo essas coisas via kde-look, o legal dessas coisas é que torna o linux mais proximo daquilo que a maioria conhece, imagina se eu tenho uma empresinha pequena, com uns 5 micros, em vez de criar um setor de TI deixo a cargo do proprio usuário cuidar de sua maquina, fazer as atualizações via pacman buscando do repositorio no meu server, o tal funcionario nem precisa saber nada, só abrir a gui e mandar atualizar o sistema dele, rapido, simples e sem terminal.
Ou então, se o cara é folgado como eu, não tá afim nem de escrever pacman -S nomedoprogrma, abre o treco espera a lista e dá um clique, td isso vendo tv ao mesmo tempo hahahha.

Agora o kompile parece ter mais funções, alem de fazer exatamente o que faz a dica do Lavitar, ele pode gerar pacotes (deb, rpm, tgz) tanto personalizados pro seu pc como genericos pra vc distribuir, td usando a fonta compactada ainda. Acho que vou baixar aqui no kubuntu mesmo e testar, se der m****problema eu reistalo, to com a cache do apt mesmo, 30 min deixo ele igual ao que está agora hehehe.
Dan Jacques
Dan Jacques Zumbi Registrado
9.8K Mensagens 254 Curtidas
#12 Por Dan Jacques
17/06/2007 - 10:49
Esse Kompile tem no apt-get do Debian? Ele tem opções para colocar as flags?

Eu vi em alguns sites na net que usam também no ./configure dois parâmetros:
./configure --enable-optimize="coloque as CFLAGS aqui" --enable-optimizations="coloque as CFLAGS aqui"

Isso resulta em uma otimização extra? Ou não?

Poxa, lembrei dos tempos em que meu nick era "baumgartner" heheheh Acho que vocês lembram-se de mim. Quando eu entrei lah não tinha mais off-topic...
rubenssoto
rubenssoto Super Participante Registrado
682 Mensagens 7 Curtidas
#15 Por rubenssoto
23/06/2007 - 19:56
# ARCHITECTURE, COMPILE FLAGS
#########################################################################
#
CARCH="i686"
CHOST="i686-pc-linux-gnu"

#-- Exclusive: will only run on i686
# -mtune builds exclusively for an architecture
# -mcpu optimizes for an architecture, but builds for the whole processor family
CFLAGS="-march=athlon64 -O2 -pipe -fomit-frame-pointer -msse3"
CXXFLAGS="-march=athlon64 -O2 -pipe -fomit-frame-pointer -msse3"
#-- Make Flags: change this for DistCC/SMP systems
MAKEFLAGS="-j3"


ta certinho ae?/ o meu e um athlon 64 x2
Responder Tópico
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal