Marcio Roberto Teixeira wrote:
> 
> Ol� pessoal.
> 
> Tenho algumas d�vidas a respeito das bibliotecas (program library). Lendo
> o Program-library-HOWTO entendi o seguinte. Bibliotecas s�o programas que
> cont�m c�digo compilado a ser inclu�do em outros programas. Existem para,
> entre outras coisas, facilitar o desenvolvimento de um programa, que
> torna-se um conjunto de v�rias sub-rotinas, as bibliotecas,
> "linkadas" entre si.
> 
> O que determina se uma biblioteca � est�tica, compartilhada (shared) ou
> dinamicamente carregada (DL), � o momento em que � "linkada". Se � linkada
> na compila��o do programa, sendo, por isto, carregada (loaded) ANTES do
> programa ser executado, � est�tica. Se � linkada na inicializa��o do
> programa, � compartilhada. Se � linkada em qualquer tempo durante a
> execu��o do programa, � dinamicamente carregada.
> 
> Certo at� a�?
Mais ou Menos, Existem bibliotecas estaticas e dinamicas.
Todas as bibliotecas dinamicas s�o compartilhadas, esse 
HOW-TO que vc leu deve ser do tempo dos aout...
 
> Se � assim, n�o h� nada no c�digo da biblioteca que a fa�a est�tica,
> compartilhada ou dl, certo? Posso, ent�o, perguntar:
Existe alguma diferen�a no modo de compilar a biblioteca,
Mas o  c�digo � o mesmo.
Existem vantagens e desvantagens nos dois tipos de biblioteca. 
A biblioteca estatica n�o ocupa recurso do sistema se o programa
n�o est� sendop usado, e o programa � mais portavel, pois n�o
se faz necessaria a instala��o da biblioteca para que o programa 
funcione.
A biblioteca dinamica ou compartilhada ocupa menos memoria para rodar 
dois ou mais programas que fazem chamadas a ela, mas vai ocupar a mesma 
memoria de uma biblioteca estatica com a mesmas fun�oes se vc executar
um
programa s�. Isso porque a biblioteca dinamica nada mais � que a
biblioteca
estatica compilada e linkada.

> 
> O que � preciso fazer para transformar uma biblioteca est�tica em uma
> compartilhada?
#gcc -Wall -c arquivo1.o arquivo2.o arquivo3.o arquivo4.o -o
libnome.so.1.0.0
#mv libnome.so.1.0.0 /lib 
pronto, t� a� a sua biblioteca dinamica, agora crie um diret�rio 
/usr/include/nome_da_lib e mova os includes(header) para l�.
Os comandos para isso seguem abaixo:
#mkdir /usr/include/nome_da_lib
#mv *.h /usr/include/nome_da_lib
Estou levando em considera��o que vc est� no diret�rio em que foi criada
a lib.
Nao esque�a de colocar o path completo da sua lib no /etc/ld.so.conf
> 
> Instalei a libssl.a e libcrypto.a (projeto openssl) "na m�o". Como indica
> o ".a", trata-se de bibliotecas est�ticas. O que fa�o para torn�-las
> compartilh�veis?
N�o � uma boa id�ia, mas se vc quiser, l� vai:
#ar -vx libssl.a
#gcc -Wall -c arquivo1.o arquivo2.o arquivo3.o -o libssl.so.<versao>
#mv libssl.so.<versao> /lib
#ln -s libssl.so.<versao> lissl.so.<dois primeiros numeros da versao>
Exemplo:
ln -sf libssl.so.2.0.1 libssl.so.2.0
Mova os includes file para um diret�rio dentro do seu /usr/include e
pronto.
Agora para usar a sua biblioteca, � s� vc colocar no seu programa os
headers 
da libssl:
#include <libssl/header.h>
Onde libssl � o diret�rio que vc criou, e 
header.h � o nome dos includes da libssl que vieram no seu pacote...
inclua o path no /etc/ld.so.conf e rode o ldconfig e pronto.
> 
> A pista que encontrei no HOWTO � a seguinte (l� n�o � dito isto!):
> 
> * criar um "soname" para libssl.a e libcrypto.a; como? criando
> links apontando para estas, links libssl.so.1 e libcrypto.so.1
> * incluir o caminho destas em /etc/ld.so.conf
> * rodar ldconfig
> * tomar um bom vinho e relaxar!
> 
> Est� certo?
Mais ou menos, mas com o que eu mandei acho que j� d� para se virar...
[:)
 
> Obrigado
De nada...
 
> t� mais+++
> --
                Qualquer duvida, me escreva...
        
                                Russo.
 

============================================================================
||            || PII - 450, 10.2 Gb, 128Mb SlackWare
Linux.               ||
||            || Red Hat is not
LINUX.                                    ||
||   ___      || All computers 100% windows
free.                         ||
||  |. .|     || Linux User:
#216669                                      ||
||   /V\     
||============================================================
||  // \\     || 
/"\                                                     ||
|| /(, ,)\    ||  \ /   CAMPANHA DA FITA ASCII - CONTRA MAIL
HTML         ||
||  ^ ~ ^     ||   X    ASCII RIBBON CAMPAIGN - AGAINST HTML
MAIL         ||
||            ||  /
\                                                     ||
============================================================================

Assinantes em 26/05/2001: 2298
Mensagens recebidas desde 07/01/1999: 115234
Historico e [des]cadastramento: http://linux-br.conectiva.com.br
Assuntos administrativos e problemas com a lista: 
            mailto:[EMAIL PROTECTED]

Responder a