Pular para o conteúdo

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.
Perfil removido removido
Hits: 24.550 Categoria: C/C++ Subcategoria: Avançado
  • Indicar
  • Impressora
  • Denunciar

Parte 2: 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.

   1. O Makefile
   2. Regras para compilação e link
   3. Instalação
   4. Usando a biblioteca

Escreva para o VOL - Contribua você também!

Apache 2.4 - Módulos de Multiprocessamento - MPM

Funtoo Linux - Pré-instalação

Aventuras do Mint Linux 10 em um computador antigo

PostgreSQL 9.4 - O conceito de Role

Alocação dinâmica de memória em C

Programação com números inteiros gigantes

Compilando Templates C++

Mapear objetos em C

Acessando a porta paralela via Linux

#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

Entre na sua conta para comentar.