Notas de Aula - MAC 211 - Laborat�rio de Programa��o
Aula anterior (aula 9)
Aula 10 - 26/3/2009
Bibliotecas est�ticas vs. bibliotecas din�micas
- Uma biblioteca � um conjunto de fun��es/m�todos/procedimentos
reutiliz�veis e que podem ser ligados a programas para gerar um arquivo
execut�vel.
- Bibliotecas est�ticas:
- o compilador acrescenta ao execut�vel final o c�digo das fun��es da biblioteca que o programa utiliza
- Bibliotecas din�micas:
- Conceito inventado pela Sun (verificar) e incorporado no SunOS pela primeira vez na d�cada de 1990.
- as bibliotecas s�o ligadas ao execut�vel em tempo de execu��o;
- compilada como c�digo independente de posi��o PIC (Position Independent Code)
- .dll no Windows, .so no UNIX
- h� duas op��es
- carga na inicializa��o: ao carregar o programa, j� carrega todas as bibliotecas din�micas
- carga pregui�osa: apenas carrega a biblioteca quando ela for necess�ria (� a mais comum)
- Vantagens de bibliotecas din�micas:
- Com bibliotecas est�ticas o tamanho do arquivo execut�vel fica bem maior
- Com
bibliotecas est�ticas, o c�digo da biblioteca � adicionado ao
execut�vel mesmo que em tempo de execu��o ele n�o seja utilizado
- Bibs din�micas s�o compartilhadas entre os v�rios programas que as usam (tanto na mem�ria quanto no disco)
- Acertos (bug fixes) nas bibliotecas s�o aproveitados pelos programas antigos
- Menor uso de mem�ria na m�quina como um todo (imagine se libc fosse est�tica)
- � poss�vel acrescentar novas funcionalidades sem mexer no programa principal (p.ex., novos itens num menu)
- Permite voc� fazer interposi��o de c�digo
- Vantagens de bibliotecas est�ticas:
- Com bibliotecas est�ticas, a vers�o das bibliotecas � fixa, portanto, n�o h� o perigo de incompatibilidade de vers�es
- Todas as bibliotecas est�o dentro do execut�vel portanto n�o h� o risco de n�o se localizar uma biblioteca em tempo de execu��o
- Mudan�as no comportamento das bibliotecas novas n�o afetam a corretude dos programas antigos
- busque na Web DLL hell
- A carga de um programa com bibliotecas din�micas � mais lenta
- Hoje em dia, bibliotecas din�micas � o padr�o na maioria dos sistemas
- -shared op��o do gcc para gerar bibliotecas din�micas
- -static no gcc, for�a a liga��o com bibliotecas est�ticas ao
inv�s de bibliotecas din�micas
- Vari�veis de ambiente:
- LD_PRELOAD - lista de bibliotecas a serem carregadas antes de todas as outras
- LD_BIND_NOW - faz as bibliotecas din�micas serem carregadas de uma vez no in�cio
- LD_LIBRARY_PATH - indica de onde pegar as bibliotecas din�micas
- o comando ldd mostra as bibliotecas din�micas que ser�o carregadas para um execut�vel num determinado contexto.
- Mais informa��es:
Pr�xima aula (aula 11)
P�gina de MAC211
P�gina do Fabio
P�gina do DCC