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!!!
MaxRaven
MaxRaven General de Pijama Registrado
4.2K Mensagens 111 Curtidas
#17 Por MaxRaven
24/06/2007 - 12:17
opa, tem no ubuntu, acho que no debian não (ele é beta, então já viu, talvez lá no debian 10.0 deve ser incluido hahahahahha), uma coisa que percebi, ele funciona bem pra copilar pra sua maquina, para criar pacotes (pelo menos aqui) dá erro dizendo que não tem o compilador (logo o gcc hahaha) então acabei deixando queto, mas deixa sair o slack12, vou compilar td com ele pra ver hehehe.
Dan Jacques
Dan Jacques Zumbi Registrado
9.8K Mensagens 254 Curtidas
#21 Por Dan Jacques
24/06/2007 - 21:49
O parâmetro -j4 torna a compilação mais rápida, pois divide o processo de compilação em 4 threads. 2 threads vão para cada core, o que acelera o processo.
3 threads eu nunca ouvi falar que deixa a compilação mais rápida em dual-core... Talvez em single...

Com o -j4 sua compilação levará praticamente metade do tempo!rindo_atoa.gif
Digo por experiência própria!
marco.tada
marco.tada Novo Membro Registrado
8 Mensagens 0 Curtidas
#23 Por marco.tada
25/06/2007 - 16:58
Leite Estragado disse:
heheh Sou eu mesmo.
E fico feliz que ajudou e que te passando para os outros wink.png

Sobre o echo, não sei não. Testei aqui mas ele grava sem as ".



O problema com as haspas é que o shell antes de executar o comando vai fazer um parse da linha de comando, e vai interpretar as haspas e fazer substitiuções de variáveis antes de executar o comando echo. Neste caso, você teria que utilizar a barra reversa "\" antes de cada caractere especial que poderia ser interpretado pelo shell. No nosso caso, teríamos:

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


Lembre-se de redirecionar as saídas destes comandos com >> nome-do-arquivo para adicionar a saída destes comandos no final do arquivo desejado.
MaxRaven
MaxRaven General de Pijama Registrado
4.2K Mensagens 111 Curtidas
#25 Por MaxRaven
26/06/2007 - 08:04
Kompile, link descritivo e downloads, neste tem o site oficial:
http://www.kde-apps.org/content/show.php/Kompile?content=30223
Uma coisa que gostei dele é que ele faz um debug completo da compilação, em caso de algum erro fica bem facil para solucionar, até mesmo pra iniciantes, há um destaque nos erros e ts mais, pena que ainda está em ingles, mas eu to pensando em traduzir e enviar para o desenvolvedor.
MaxRaven
MaxRaven General de Pijama Registrado
4.2K Mensagens 111 Curtidas
#28 Por MaxRaven
28/06/2007 - 06:03
os caras tão começando a fazer agora, quem sabe quando estiver pronto alguem porta ele pra outras libs, mas mesmo como beta tá bem legal.
O que achei interessante, principalmente pra quem nunca usou linux nenhum, é que pega um tar.gz e começa a criar o pacote sem precisar descompactar nem nada, ai no futuro aquelas perguntas do tipo "como instalao um programa tar.gz" poderão respondidas assim "Usa o kompile"
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal