View Full Version : linkagem estática


JAFoNEXUS
20-05-2008, 11:33
Boas, imagine-se tenho um executavel para criar, que usa varias librarias presentes no sistema (linux).

Eu quero que estas librarias fiquem todas integradas no meu executavel, sei que tem a ver com a linkagem estática e dinamica.

Alguem sabe como é que eu faço isto ?!?

thanks

The_True_Eue
21-05-2008, 20:26
Para começar precisas de ter as versões estáticas dessas bibliotecas (mesmo que fosse livrarias, não era librarias)instaladas no sistema. Se não é o caso, podes começar por instalá-las com o teu gestor de pacotes preferido.

A diferença (muito sucintamente) de umas paras as outras é a seguinte:
- As dinâmicas (aka partilhadas, shared) residem no sistema e são carregadas apenas uma vez. Depois, todos os programas que necessitem dessas bibliotecas usam a mesma cópia que reside em memória.
- As estáticas residem no executável, logo são sempre carregadas com o programa. Cada programa usa a sua "cópia pessoal" da biblioteca. Mesmo duas instâncias do mesmo programa não partilham a biblioteca em memória.

Se já as tens... procura nas opções do teu compilador e/ou linker como é que fazes para linkar com essas bibliotecas.

P.S.: Não sei se sabes mas dependendo das bibliotecas que queres compilar, o executável pode ficar extremamente grande, tanto no disco como na memória.

The_True_Eue
28-05-2008, 11:32
Ok, tropecei nisto hoje... Se estás a usar gcc, usa a opção -all-static do linker.