Escolar Documentos
Profissional Documentos
Cultura Documentos
Introduo:
Algo que devemos estar atentos so as bibliotecas. A funo destas bibliotecas lembra
um pouco a dos arquivos .dll no Windows. Temos as bibliotecas estticas e dinmicas. As
dinmicas so usadas por vrios programas e necessrias para instalar programas distribudos
em cdigo fonte (os famosos arquivos tar.gz)
Para isso, podemos usar o comando abaixo, que produz uma lista de dependncias:
# ldd <caminho_do_executvel>
Exemplo:
root@gladiador# du -h /bin/sln
428K /bin/sln
root@gladiador# du -h /bin/ln
24K /bin/ln
Note que um executvel esttico bem maior que o executvel dinmico, isso ocorre
pois o esttico j contm o que precisa dentro do prprio executvel. Obviamente bibliotecas
compartilhadas tendem a gerar executveis menores; eles tambm usam menos memria e
significa que menos espao em disco usado.
O modo esttico ligeiramente mais rpido, pois no precisa buscar bibliotecas em
diretrios, mas consome mais espao (dado que cada programa teria uma cpia da biblioteca
dentro de si).
O modo compartilhado ligeiramente mais lento, pois precisa sempre abrir o arquivo
da biblioteca, mas ocupa menos espao (dado que s se tem uma cpia da biblioteca) e facilita
centralizando a manuteno (se voc precisar mudar a verso de uma biblioteca, no tem de
recompilar o programa, basta trocar o arquivo da biblioteca). O padro usar bibliotecas
compartilhadas, e geralmente a deciso mais sbia, mas precisa que todas as bibliotecas
necessrias estejam presentes no sistema para executar.
Agora, para vermos a importncia disso vamos fazer uma simulao, vamos esconder
uma biblioteca da aplicao xmms (player de msica). Ento, mudando o nome da biblioteca:
root@gladiador# xmms
xmms: error while loading shared libraries: libxmms.so.1: cannot open shared object file: No
such file or directory
Ele no est conseguindo detectar libxmms.so.1, pois fizemos a simulao de alterar o nome
dela.
Obs:
/lib e /usr/lib j esto automaticamente inclusas!
Temos tambm outro arquivo, o /etc/ld.so.cache que contm uma lista de todas as
bibliotecas compartilhadas que ld.so ou ld-linux.so iro procurar na mquina. Esse arquivo
sempre gerado e atualizado por ldconfig baseando-se no arquivo /etc/ld.so.conf.