Bibliotecas


Comandos intermediários do GNU/Linux

Bibliotecas

Pequenas introdução



Hoje em dia é muito simples instalar um programa já compilado, com a ajuda de gerenciadores de pacotes com rpm, dpkg, aptitude e outros. Mas com certeza um dia iremos encontrar muitos programas disponíveis somente em código-fonte, e às vezes nem tão bem documentado. Entretanto, compilar um programa não é algo de outro mundo.
Temos as bibliotecas estáticas e dinâmicas.
Em sistemas Linux existem dois tipos fundamentais de programas executáveis.

Estático
Contém todas as funções que ele precisa para ser executado, em outras palavras, é completo.

Dinâmico
As dinâmicas são usadas por vários programas e necessárias para instalar programas distribuídos em código fonte.

# ldd [caminho do executável]

1

# ldd $(which [executável])

2

Exemplo de executável estático

3

4
Exemplo de executável compartilhado

5
du -h /usr/bin/module-assistant ; du -h /bin/ln

6
O executável estático é bem maior que o executável dinâmico, isso ocorre pois estático já contém o que precisa dentro do próprio executável.

Modo Estático e Compartilhado

Modo estático é ligeiramente mais rápido, pois não precisa buscar bibliotecas em diretórios, mas consome mais espaço (dado que cada programa teria uma cópia da biblioteca dentro de si).

Modo compartilhado é ligeiramente mais lento, pois precisa sempre abrir o arquivo da biblioteca, mas ocupa menos espaço (dado que só se tem uma cópia da biblioteca).

O padrão é usar bibliotecas compartilhadas, e geralmente é a decisão mais sábia, mas precisa que todas as bibliotecas necessárias estejam presente no sistema para executar.

Bibliotecas estáticas tem o nome de libname.a
Bibliotecas compartilhadas são chamadas lib.so.x.y.z

No linux as bibliotecas podem ser encontradas em /lib e /usr/lib/

As bibliotecas mais comuns, utilizadas por todas as aplicações e utilitários do sistema, são:

libc: é um grande pacote de bibliotecas que provê funcionalidades básicas de entrada e saída, de acesso a serviços do sistema, à rede, etc.

ld-linux: provê as funções necessárias para a carga de bibliotecas dinâmicas, durante a inicialização do programa.

Para instalar uma biblioteca necessária ausente, é preciso copiá-la em um dois diretórios listados no arquivo /etc/ld.so.conf e em seguida executar o comando ldconfig.

para verificar todas as bibliotecas presente no sistema usa-se o comando ldconfig -p

Se por algum motivo apagar o arquivo /etc/ld.so.cache, é só executar o comando ldconfig.