Dynamic libraries com libtool

Este artigo tem como objetivo dar uma pequena noção de como utilizar a ferramenta libtool para gerar uma biblioteca dinâmica, os famosos libalgumacoisa.so. Isso permite que você linke várias funções que são usadas em vários códigos numa mesma biblioteca.

[ Hits: 22.605 ]

Por: Perfil removido em 27/07/2007


Regras para compilação e link



Agora vamos para a parte mais interessante do artigo, a compilação e link. Vamos então focar na seção "all" do Makefile visto na página anterior.

A primeira regra que é um for, serve para compilar todos os arquivos em um só comando, não precisando repetir várias vezes o comando. O trecho:

echo "    [CC] $$x -> `basename $$x .c`.o"

fará apenas com que a saída da compilação de cada arquivo seja parecido com:

   [CC] fonte.c -> fonte.o

Para quem está acostumado com o make do kernel do Linux, sim, me baseei nele para criar essa saída, que achei bastante agradável.

O próximo comando:

libtool --silent --mode=compile gcc -c $$x

é que fará o verdadeiro trabalho. Usaremos o libtool no modo compile para apenas criar os objetos do mesmo, que têm extensão .lo. O gcc por sua vez gerará o código objeto .o, como é de costume. A flag --silent do libtool apenas fará com que o mesmo não apresente saídas.

A terceira linha:

@libtool --silent --mode=link gcc -export-dynamic -no-undefined -rpath /usr/local/lib -o libteste.la *.lo

fará com que o libtool, agora em modo link, faça a ligação entre seus fontes para criar a biblioteca libteste.la, que também já foi definido em -rpath a sua pasta de instalação, que logicamente pode ser alterada.

Para mais informações quanto às flags, recomendo consultar man libtool, ou então man gcc.

Página anterior     Próxima página

Páginas do artigo
   1. O Makefile
   2. Regras para compilação e link
   3. Instalação
   4. Usando a biblioteca
Outros artigos deste autor

Instalando e arredondando o Slackware 13.1

Instalando o kernel 2.6.13 pré-compilado no Slackware 10.2

Utilizando GMail (Google Mail) em seu cliente de email favorito

Instalando Apache2, PHP4 e MySQL

Pebrot, MSN messenger no terminal

Leitura recomendada

Utilizando técnicas recursivas em C e C++

Acessando a porta paralela via Linux

GNA: um Coprocessador para Aceleração Neural

openCertiface: Biométrica Facial em nuvem baseada em software livre

Projeto Icecream (parte 1)

  
Comentários
[1] Comentário enviado por balani em 27/07/2007 - 17:28h

Muito bom, parabens. seu artigo dá uma otima noção.

[2] Comentário enviado por sombriks em 29/07/2007 - 01:25h

é sim, pra pegar o nome da libe é só cortar fora o "lib" e o ".la | .so". Tá no pdf do brian cough.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts