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]