Autor Tópico: Duvida com CFlags na compilação de aplicativo.  (Lida 2781 vezes)

Offline platao

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 5.052
    • Ver perfil
Duvida com CFlags na compilação de aplicativo.
« Online: 14 de Agosto de 2011, 17:24 »
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 ;)


« Última modificação: 16 de Agosto de 2011, 21:22 por platao »
\\\\\\\\Apostilas Dicas e Guias do Ubuntu\\\\\\\\\> http://ubuntuforum-br.org/index.php/topic,79368.msg440997.html#msg440997

Offline galactus

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.685
    • Ver perfil
Re: Duvida com CFlags na compilação de aplicativo.
« Resposta #1 Online: 16 de Agosto de 2011, 14:53 »
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!

« Última modificação: 16 de Agosto de 2011, 14:57 por galactus »
BigLinux no Notebook  / Várias Distros Virtualizadas no PC.

Offline platao

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 5.052
    • Ver perfil
Re: Duvida com CFlags na compilação de aplicativo.
« Resposta #2 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?
« Última modificação: 16 de Agosto de 2011, 16:27 por platao »
\\\\\\\\Apostilas Dicas e Guias do Ubuntu\\\\\\\\\> http://ubuntuforum-br.org/index.php/topic,79368.msg440997.html#msg440997

4d4c47

  • Visitante
Re: Duvida com CFlags na compilação de aplicativo.
« Resposta #3 Online: 16 de Agosto de 2011, 16:57 »
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.


« Última modificação: 16 de Agosto de 2011, 17:08 por 4d4c47 »

Offline platao

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 5.052
    • Ver perfil
Re: Duvida com CFlags na compilação de aplicativo.
« Resposta #4 Online: 16 de Agosto de 2011, 17:03 »
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.
« Última modificação: 17 de Agosto de 2011, 23:15 por platao »
\\\\\\\\Apostilas Dicas e Guias do Ubuntu\\\\\\\\\> http://ubuntuforum-br.org/index.php/topic,79368.msg440997.html#msg440997