# compilar pacotes estaticamente...

## mk_

gostaria de saber se há como compilar pacotes estaticamente no gentoo?

pois sei que isso tambem otimiza o desempenho do sistema

----------

## Matheus Villela

Opa, coloque a flag "static" no seu make.conf  :Wink: 

Se for pro compilar determinado programa somente estaticamente -> USE="static" emerge programa

Eu quando dou emerge em algum programa/pacote procuro sempre antes usar "emerge -av programa" pra poder conferir as flags, por exemplo, eu curto gtk e gtk2 então coloco nas flags mas alguns programas eu quero compilar pra rodar sem o X então eu verifico com o "emerge -av ...." antes pra poder ver as flags que ele vai usar, um bom caso disso é o bitchx aqui, várias vezes acabo compilando ele com gtk quando na verdade não quero  :Very Happy: 

Uma saída do emerge -av pra você ter uma noção:

```
root@emulacao matheus # emerge -av opera

These are the packages that I would merge, in order:

Calculating dependencies ...done!

[ebuild   R   ] net-www/opera-7.51  +spell -static  24,934 kB 

Total size of downloads: 24,934 kB

Do you want me to merge these packages? [Yes/No] 
```

Agora a saída usando USE="static"

```
root@emulacao matheus # USE="static" emerge -av opera

These are the packages that I would merge, in order:

Calculating dependencies ...done!

[ebuild   R   ] net-www/opera-7.51  +spell +static  24,934 kB 

Total size of downloads: 24,934 kB

Do you want me to merge these packages? [Yes/No]
```

E a saída retirando o suporte à spell(correção de sintaxe):

```
root@emulacao matheus # USE="-spell" emerge -av opera

These are the packages that I would merge, in order:

Calculating dependencies ...done!

[ebuild   R   ] net-www/opera-7.51  -spell -static  24,934 kB 

Total size of downloads: 24,934 kB

Do you want me to merge these packages? [Yes/No]
```

Lembrando que o Opera é código fechado mas as flags são suportadas por existirem diferentes versões pré-compiladas no portage

----------

## mk_

eu posso compilar qualquer coisa com "static" ? o que é aconselhável compilar com static?

----------

## fernandotcl

 *mk_ wrote:*   

> eu posso compilar qualquer coisa com "static" ? o que é aconselhável compilar com static?

 

Talvez seja vantajoso linkar o GTK ou Qt e seu navegador estaticamente. Mas tome cuidado, porque se um programa usar muitas bibliotecas, quando ele for linkado estaticamente ele vai ficar muito grande e vai ocupar muita memória, o que pode causar perda de desempenho se a swap tiver que ser usada.

Eu não conhecia a flag "static". Em todo caso, se não for possível setar essa flag pra um determinado pacote, talvez basta fazer um:

```
MAKEOPTS="-j2 LDFLAGS='-all-static'" emerge <pacote>
```

----------

## mk_

fernandotcl: quando vc citou a vatagem de algumas distros compilarem alguns binários estaticamente, vc se referia a esses pacotes que vc citou a pouco : " Talvez seja vantajoso linkar o GTK ou Qt e seu navegador estaticamente " ? ou tambem é nescessário mexer no bootstrap?

----------

## fernandotcl

 *mk_ wrote:*   

> fernandotcl: quando vc citou a vatagem de algumas distros compilarem alguns binários estaticamente, vc se referia a esses pacotes que vc citou a pouco : " Talvez seja vantajoso linkar o GTK ou Qt e seu navegador estaticamente " ? ou tambem é nescessário mexer no bootstrap?

 

Não sei quais são os pacotes que elas compilam estaticamente, mas talvez sejam esses. O processo de bootstrap foi só pra compilar um sistema do zero, e nesse caso nada é estático. Mas mesmo distros como Slackware que se gabam por ter pacotes "stock", i.e., sem modificações, aplicam patches na glibc, gcc e binutils, pelo menos. É difícil reproduzir isso.

Outra coisa: que kernel você está usando? O melhor do Gentoo costuma ser o gentoo-dev-sources, mas você pode pegar o .config de um kernel no ftp do Slackware e recompilar baseado nele.

----------

## mk_

o lance do .config do slack, acho q nem vai influenciar porque eu sempre recompilo meu kernel =)

to usando o gentoo-dev-sources, com o preempt ativado.

----------

## mk_

pelo pouco que li sobre o gentoo, descobri q eu posso otimizar os pacotes de qualquer forma, inclusive no modelo do slack ou melhor.  :Very Happy: 

acho q o problema de desempenho q eu estrava tendo com o gentoo, tenha sido causado por alguma incompatibilidade entre os patchz do gentoo aplicados ao gentoo-dev-kernel e a opção preempt, pois ocorreu varias menssagens nos logz do kernel.

----------

## fernandotcl

Você pode tentar colocar preemptibilidade no development-sources, que é o vanilla-sources para 2.6. Se conseguir, poste o resultado para que façamos o mesmo.  :Wink: 

----------

## mk_

olá! bem, ainda não testei isso, mas aqui ta tudo perfeiiitoo depois q mexi no lance do preempt! cara, eu to virando um fã dessa distro.  :Very Happy: 

acho q não troco ela mais por nada  :Wink:  eheheheheh

vo continuar testando, pra ver se o problema consistia no preempt mesmo.

te +!

----------

## koringa

 *Matheus Villela wrote:*   

> Opa, coloque a flag "static" no seu make.conf 
> 
> Se for pro compilar determinado programa somente estaticamente -> USE="static" emerge programa
> 
> Eu quando dou emerge em algum programa/pacote procuro sempre antes usar "emerge -av programa" pra poder conferir as flags, por exemplo, eu curto gtk e gtk2 então coloco nas flags mas alguns programas eu quero compilar pra rodar sem o X então eu verifico com o "emerge -av ...." antes pra poder ver as flags que ele vai usar, um bom caso disso é o bitchx aqui, várias vezes acabo compilando ele com gtk quando na verdade não quero 
> ...

 

Ai galera estava lendo este post acabei de instalçar o gentoo e sou novato. Eu li um tutorial que mostrava algo rápido sobre o emerge mas estou começando a ver que tem muito pela frente heheheh.

Minha dúvida lendo este post é: Nunca vou utilizar, ou não convém utilizar, emerge pacote somente ? Sempre terei que adicionar um argumento USE=" " ? E se tiver como saberei qual argumento adicionar ao mozilla, bitchx, xchat e assim por diante ? 

Desculpa mas não entendio mesmo ???

Valeu e desculpa se viagei ...

Abraço

----------

