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

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

[ Hits: 22.264 ]

 


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

Exercícios em C

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

gcc: fatal error: cannot execute 'cc1plus': execvp: [...] - Como resolver no Linux Mint 20

C compiler Cannot create executable?

Autoestudo e certificação C/C++

  

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