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

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

[ Hits: 22.057 ]

 


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

Software de administração de celular no Linux

Instalar distros dentro de arquivos

Leitura recomendada

STDPRN para GCC

GDB "hackeando" programas

Microsoft Visual Studio Code no GNU/Linux

CodeBlocks - IDE C++ no Ubuntu 12.04

Programando em C/C++ no Eclipse

  

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