Como criar bibliotecas dinâmicas em C/C++

Publicado por Alexandre Felipe Muller de Souza em 09/06/2006

[ Hits: 22.210 ]

 


Como criar bibliotecas dinâmicas em C/C++



Mais comuns no Windows, as bibliotecas dinâmicas podem ter sua utilidade no Linux em programas de grande porte ou sistemas com pouca memória. Essa dica explica rapidamente como criar e usar uma biblioteca dinâmica nos seus programas em C/C++.

Digamos que você escreveu dois arquivos em C (fulano.c e beltrano.c), com as funções que serão usadas na biblioteca minhadl.so. Para criar a biblioteca, usaremos os arquivos objetos digitando os seguintes comandos:

$ gcc -fPIC -o fulano.o -c fulano.c
$ gcc -fPIC -o beltrano.o -c beltrano.c
$ ld -shared -o minhadl.so fulano.o beltrano.o


Para compilar seu programa, use o seguintes parâmetros do GCC:

$ gcc -o main main.c -L. -lminhadl -ldl

Outras dicas deste autor

Instalar distros dentro de arquivos

Software de administração de celular no Linux

Leitura recomendada

Baixe de graça alguns livros do O'Reilly

Microsoft Visual Studio Code no GNU/Linux

Usando getch() no Linux, modo fácil

Gnuconio, a conio para Windows e GNU/Linux (v0.1)

printf("Criando Delay em Linguagem C de forma SIMPLES");

  

Comentários
[1] Comentário enviado por le.roque em 04/08/2006 - 17:03h

uma dúvida !!
como ficaria o arquivo main.c pra usar essa biblioteca ?? precisa fazer algum #include ??

[2] Comentário enviado por fcyber em 20/09/2006 - 10:59h

Ótima dúvida... le.roque...
Como chamar a biblioteca dinamica? algum tratamento de erro de a biblioteca nao puder ser achada??? Como deve ser feito os #include para poder usar a biblioteca??

[3] Comentário enviado por nunesvictor em 06/08/2007 - 15:07h

bom...
usando algo parecido...
vc pode usar varios codigos-fonte .c pra gerar um executavel soh

exemplo:

$ gcc -c func1.c
$ gcc -c func2.c
$ gcc -c main.c

isto vai gerar 3 arquivos .o (objetos), ja compilados, mas ainda nao linkados
pra juntar isso tudo

$ gcc -o exec main.o func1.o func2.o

a duvida sobre como chamar as funçõs...
em vez de declarar como cabeçalhos (#include "func1.c")
vc faz assim:

#include <stdio.h>

extern void funcao(void);
extern int fencao2(int a);

main() {
funcao();
funcao2();
}


assim, sempre ele vai chamar de um arquivo externo...
ja com a lib nau consegui compilar o executavel usando a .so
mas consegui gerá-la
qual o erro?



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts