1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

linkagem estática

Discussão em 'Programação' iniciada por JAFoNEXUS, 20 de Maio de 2008. (Respostas: 2; Visualizações: 1182)

  1. JAFoNEXUS

    JAFoNEXUS Power Member

    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
     
  2. The_True_Eue

    The_True_Eue Power Member

    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.
     
    Última edição: 21 de Maio de 2008
  3. The_True_Eue

    The_True_Eue Power Member

    Ok, tropecei nisto hoje... Se estás a usar gcc, usa a opção -all-static do linker.
     

Partilhar esta Página