Duvida com CFlags na compilação de aplicativo.

Iniciado por platao, 14 de Agosto de 2011, 17:24

tópico anterior - próximo tópico

platao

Ola companheiros, estou tentando compilar um aplicativo, no caso o Wine para o meu hardware;

Note  Gigabyte 466u   http://produto.mercadolivre.com.br/MLB-178420773-notebook-gigabyte-466u-dual-core-2gb-ram-hd-160-tela-154-_JM -imagem ilustrativa somente-

Plataforma Santa Rosa Intel
Processor   2x Intel Core2 Duo CPU T7700 @ 2.40GHz
Memory   4051MB
Operating System   Ubuntu 10.04.3 LTS
OpenGL Renderer   Mesa DRI Intel 965GM GEM 20091221 2009Q4
Kernel   Linux 2.6.32-32-generic (x86_64)
C Library   GNU C Library version 2.11.1 (stable)
Default C Compiler   GNU C Compiler version 4.4.3 (Ubuntu 4.4.3-4ubuntu5)
Renderer   Mesa DRI Intel(R) 965GM GEM 20091221 2009Q4
Version   2.1 Mesa 7.7.1
Direct Rendering   Yes

lspci    ---- http://paste.debian.net/126189/

lsusb   ---- http://paste.debian.net/126190/

gcc version;

gcc (Ubuntu 4.4.3-4ubuntu5) 4.4.3

cat /proc/cpuinfo;

http://paste.debian.net/126191/

Nesse hardware o Ubuntu funciona muito bem, nao ha do que reclamar, procedendo com a duvida...no caso eu baixo o tar.bz do proprio repositorio para a minha maquina, extraio entro na pasta e antes de compilar rodo o comando;

sudo apt-get build-dep wine1.2

Ele baixa as dependencias sem problema antes da compilação e tudo o corre normalmente, mas agora a duvida....é com os parametros que vou usar nessa compilação, cade vc Galactus??? heheheh ;D

estou compilando assim;

sudo ./configure --enable-opengl --enable-optimize=CFLAGS="-march=native -O2 -pipe" --enable-optimizations=CFLAGS="-march=native -O2 -pipe"


Li aqui http://en.gentoo-wiki.com/wiki/Safe_Cflags/Intel que no meu caso como uso GCC 4.4.3 posso usar o parametro march=native, e é ai que ha a duvida.

O march=native ele compila com todas as otimizaçoes para o meu precessador e no caso, preciso especificar o mtune?  em --enable-optimizations? ou ele entende e segue automaticamente?

E no caso o march=nocona? é melhor usar ele do que o march=native? Pelo que andei lendo o nocona e mais -generico- e o native e mais especifico para tipo de processador ativando as extençoes especificas da arquitetura.

Entre march=native e march=generic o native e a opção mais indicada e otimizada?

Compilei da forma como esta o comando acima e esta tudo normal, no caso gostaria tbm de uma sugestao e uma opiniao de como melhorar o comando acima, ou se ele ja esta adequado.

No caso tbm me ocorreu outra duvida, como o Ubuntu tem um kernel generico entrei com o comando;

gcc -c -Q -march=native --help=target

Resultou essa tabela;

http://paste.debian.net/126203/

Como da para ver, ha muitas extenções desabilitadas isso e normal para um kernel generico do Ubuntu?

Adiantaria entao compilar um aplicativo, o Wine, para rodar plenamente mas se o proprio kernel é generico? e talvez nao tenha ativo todas as otimizações para o meu processador?

Bom é isso, opnioes e correçoes serao bem vindas ;)


\\\\\\\\Apostilas Dicas e Guias do Ubuntu\\\\\\\\\> http://ubuntuforum-br.org/index.php/topic,79368.msg440997.html#msg440997

galactus

#1
Grande mestre platão!

Qué isso, feras em compilação são o vampire, o Gunss e o 4d4c47 entre outros!

Vou deixar meus 2 centavos!

O march deve ser native mesmo!

O mtune deve ser generic até o GCC 4.5.1! Do 4.5.2 em diante use mtune=native!

Com a opção native você ativa as instruções necessárias para o seu processador específico!

É isso mesmo, o kernel generic tem que estar com um monte de coisas desabilitadas mesmo!  Ele tem que rodar em máquinas de A até Z!!!

Agora essa linha assim repetidas mesmo ou foi erro de digitação seu?

sudo ./configure --enable-opengl --enable-optimize=CFLAGS="-march=native -O2 -pipe" --enable-optimizations=CFLAGS="-march=native -O2 -pipe"


Outra observação importante é que nunca todas as instruções estarão ativas ao mesmo tempo!

Isso porque várias delas são na verdade um conjunto das instruções antigas com um novo nome!

É o caso da instrução SSE4.2 da Intel!  Junta todas as SSE que vieram antes!

Boa sorte na compilação!

Pra sentir uma boa diferença nos aplicativos do Ubuntu, você teria que usar o apt-build!

Dá muita diferença sim, mas o trabalho que dá pra manter o sistema.....

Eu preferi deixar pra lá!

Toda atualização do aplicativo vai ter que refazer a compilação!

BigLinux no Notebook  / Várias Distros Virtualizadas no PC.

platao

#2
Ola Galactus, muito obrigado pelo elogio, eu aprendo muito mais com os companheirso do que ensino aqui :).

So nao estou acertando esse comando, me parece errado ou mal colocado.....ele compilou tudo blz e funcionou bem, o aplicativo executa normal quanco chamo pelo terminal.

Entao o comando correto seria assim? Infelizmente nao me ocorreu nada melhor do que isso....

sudo ./configure --enable-opengl --enable-optimize=CFLAGS="-march=native -O2 -pipe" --enable-optimizations=CFLAGS="-mtune=generic -O2 -pipe"

Ja que o meu GCC é o 4.4.3.

Sem duvida com o APT-Built que compila tudo seria interessante...assim que estiver com mais tempo vou testar so por curiosidade, deve dar um trabalhao....

Minha duvida e com o comando mesmo Galactus, agora ficou bem mais claro para mim, esta certo o comando agora? Ou eu deveria colocar de outra forma?

Tbm compilei dessa forma;

sudo apt-get build-dep wine 1.2

sudo apt-get --build source wine 1.2

Mas ainda nao vi deferença, sera que dessa forma ele compila mais generico ou com o comando citado no inicio eu teria uma compilação mais otimizada?
\\\\\\\\Apostilas Dicas e Guias do Ubuntu\\\\\\\\\> http://ubuntuforum-br.org/index.php/topic,79368.msg440997.html#msg440997

4d4c47

#3
Citação de: platao online 16 de Agosto de 2011, 15:29
Ola Galactus, muito obrigado pelo elogio, eu aprendo muito mais com os companheirso do que ensino aqui :).

So nao estou acertando esse comando, me parece errado ou mal colocado.....ele compilou tudo blz e funcionou bem, o aplicativo executa normal quanco chamo pelo terminal.

Entao o comando correto seria assim? Infelizmente nao me ocorreu nada melhor do que isso....

sudo ./configure --enable-opengl --enable-optimize=CFLAGS="-march=native -O2 -pipe" --enable-optimizations=CFLAGS="-mtune=generic -O2 -pipe"

Ja que o meu GCC é o 4.4.3.

Sem duvida com o APT-Built que compila tudo seria interessante...assim que estiver com mais tempo vou testar so por curiosidade, deve dar um trabalhao....

Minha duvida e com o comando mesmo Galactus, agora ficou bem mais claro para mim, esta certo o comando agora? Ou eu deveria colocar de outra forma?

Tbm compilei dessa forma;

sudo apt-get build-dep wine 1.2

sudo apt-get --build source wine 1.2

Mas ainda nao vi deferença, sera que dessa forma ele compila mais generico ou com o comando citado no inicio eu teria uma compilação mais otimizada?

quando compilo o wine, faço desse jeito:


$ ./configure CFLAGS="-march=native -msse4 -msse4a -mfpmath=sse -O2 -pipe" CXXFLAGS="-march=native -msse4 -msse4a -mfpmath=sse -O2 -pipe" CPPFLAGS="-march=native -msse4 -msse4a -mfpmath=sse -O2 -pipe"

OBS= tenho aqui um atlhon II por isso utilizo -msse4 e -msse4a, mas se quiser pode tirar todas flags de vermelho.

e depois dô uma olhada no arquivo Makefile pra ver se adicionou as cflags mesmo.


no seu caso então seria desse jeito:

$ sudo ./configure --enable-opengl CFLAGS="-march=native -O2 -pipe" CXXFLAGS="-march=native -O2 -pipe" CPPFLAGS="-march=native -O2 -pipe"


valeu.



platao

#4
Opa, valeu Galactus e 4d4c47 vou testar isso agora mesmo.

Vou dar uma estudada tbm nos parametros que vc indicou 4d4c47, obrigado aos dois.


PS; compilou normal e na minha opiniao ficou bom, ao meu ver compilando um aplicativo vai me ajudar a entender a compilação do kernel mais adiante, valeu.
\\\\\\\\Apostilas Dicas e Guias do Ubuntu\\\\\\\\\> http://ubuntuforum-br.org/index.php/topic,79368.msg440997.html#msg440997