Fórum Ubuntu Linux - PT

Suporte Técnico => Programação e Scripts => Tópico iniciado por: Diego_Rocha em 05 de MAR?O de 2007, 12:34

Título: Como criar bibliotecas em c
Enviado por: Diego_Rocha em 05 de MAR?O de 2007, 12:34
Tenho uma duvida como poderia criar uma biblioteca em c, andei pesquisando no google e nao achei nada a respeito que seja bem explicado, espero que voces possam me explicar obrigado t++
Título: Re: Como criar bibliotecas em c
Enviado por: Lamego em 05 de MAR?O de 2007, 12:43
Dá uma leitura na seção do libtool na apostila:
http://www.tol.pro.br/portal/component/option,com_tutorial/func,info/item,683/Itemid,31/

Criar bibliotecas é um tópico avançado...
Título: Re: Como criar bibliotecas em c
Enviado por: Diego_Rocha em 05 de MAR?O de 2007, 12:52
Valeu cara exemplo apostila muito boa, vai me ajudar muito, muito obrigado t++  ;D
Título: Re: Como criar bibliotecas em c
Enviado por: solanoalves em 05 de MAR?O de 2007, 13:13
"Tai" uma coisa que eu sempre quis aprender.  :o
Título: Re: Como criar bibliotecas em c
Enviado por: Diego_Rocha em 05 de MAR?O de 2007, 13:42
Se alguem pudesse dar em exemplo bem basico so pra ter uma ideia ficarei grato, por exempo tenho que criar um arquivo .c com as funçoes depois crio um arquivo .h declarando as funçoes e depois utilizo ela no meu programa, é isso? e se for isso como compilo com o gcc, obrigado t++
Título: Re: Como criar bibliotecas em c
Enviado por: Diego_Rocha em 05 de MAR?O de 2007, 14:26
Eu achei uma apostila em ingles que fala como criar uma biblioteca so que no exemplo ele não cria um arquivo .h ele cria arquivos .o e um .a, gostaria de uma explicação do que exatamente faz esses arquivos .o e .a ja que nessa apostila so tem o exemplo, vou postar ele aqui realmente funciona eu fiz o teste, mas ele não cria o header,  ???

Citar
Here is a simple scenario to create and use library:
-----------------------------------------------------
main.c
#include <stdio.h>
/* functions have to be external */
extern void test();
extern void util();
int main() {
   printf("in main");
   /* Let call functions in library */
   test();
   util();
   return 0;
}
-----------------------------------------------------
test.c
int test() {
   printf("in test");
   return 0;
}
-----------------------------------------------------
util.c
int util() {
   printf("in util");
  return 0;
}
-----------------------------------------------------
Lets compile above source codes:

$  gcc -c test.c
$  gcc -c util.c
$ ar rc libtest.a test.o util.o
$ ranlib libtest.a
$ gcc -c main.c
$ gcc main.o -L /home/simsek -ltest -o testprog

We compiled source files and produce a executable program named testprog by last command
above. If you run testprog, it will produce following outputs:

$ ./testprog
in main
in test
in util
Título: Re: Como criar bibliotecas em c
Enviado por: solanoalves em 05 de MAR?O de 2007, 14:26
Assim por exemplo:

funcoes.h

Código: [Selecionar]
int produto(int a, int b)
{
 return a*b;
}

programa.c

Código: [Selecionar]
#include "funcoes.h"
#include <stdio.h>

int main()
{
 int i,t;
 i=5;
 t=10;

 printf("\nproduto : %d\n",produto(i,t));
}
Título: Re: Como criar bibliotecas em c
Enviado por: Lamego em 05 de MAR?O de 2007, 14:27
Existem bibliotecas dinâmicas e estáticas, o mais fácil de explicar e utilizar são as estáticas.
Uma biblioteca não é mais do que um conjunto de ficheiros objecto (.o), estes ficheiros são os ficheiros gerados pelo compilador.

Uma forma muito trivial de compilar uma biblioteca é:
gcc biblioteca.c -o biblioteca.o

Depois para usar ela:
gcc programa.c bibliotecta.o -o programa

Bibliotecas mais complexas são um conjunto de .o, arquivados com o "ar".
Bibliotecas dinâmicas são mais complexas de explicar.

Se você não sabe para que serverm os .h, esquece a criação de bibliotecas, convem ser um programador experiente em C antes de pensar em criar bibliotecas :)
Título: Re: Como criar bibliotecas em c
Enviado por: solanoalves em 05 de MAR?O de 2007, 14:31
Citar
Uma forma muito trivial de compilar uma biblioteca é:

Que significa trivial ?
Título: Re: Como criar bibliotecas em c
Enviado por: Lamego em 05 de MAR?O de 2007, 14:41
trivial = simples
Título: Re: Como criar bibliotecas em c
Enviado por: ginho em 05 de MAR?O de 2007, 14:44
Julga-se. Algo sabido de todos.
Título: Re: Como criar bibliotecas em c
Enviado por: Diego_Rocha em 05 de MAR?O de 2007, 14:50
Julga-se. Algo sabido de todos.

Perdão mais não entendi,
Título: Re: Como criar bibliotecas em c
Enviado por: Diego_Rocha em 05 de MAR?O de 2007, 15:54
Se você não sabe para que serverm os .h, esquece a criação de bibliotecas, convem ser um programador experiente em C antes de pensar em criar bibliotecas :)

Ai cara eu acabei de criar um header aqui, não sei se fiz certo mais funcionou, e foi muito simples criei o arquivo.h com as bibliotecas que queria no meu programa criei as funçoes e depois no programa chamei o header com o #include "arquivo.h" mais ou menos assim,

arquivo.h
Código: [Selecionar]
#ifndef _ARQUIVO_H
#define _ARQUIVO_
#include <stdio.h>

void teste(char *_nome);

void teste(char *_nome)
{
        printf("Seu nome é %s", nome);
}

#endif

e depois no meu arquivo.c fiz isso

arquivo.c
Código: [Selecionar]
#include "arquivo.h"
int main ()
{
         char nome[100];
         printf("Qual seu nome --> ");
         scanf("%s", nome);
         teste(nome);
         return 0;
}

Agora pergunto isso esta certo como um header; ??
Título: Re: Como criar bibliotecas em c
Enviado por: ginho em 05 de MAR?O de 2007, 16:13
Citar
Julga-se. Algo sabido de todos.

Literalmente.

Título: Re: Como criar bibliotecas em c
Enviado por: ginho em 05 de MAR?O de 2007, 16:39
É o que diz no meu dicionário:
(https://ubuntuforum-pt.org/proxy.php?request=http%3A%2F%2Fi86.photobucket.com%2Falbums%2Fk109%2Fginho_album%2FScannedpicture.png&hash=6935f8e834a534c7d3369d4a911e738e042b136d)
 Não consegui deixar melhor, é muito antigo, me acompanha deste os primeiros anos
de escola.
Nossa língua é maravilhosa. Era apenas o significado, não uma afirmação.
Título: Re: Como criar bibliotecas em c
Enviado por: solanoalves em 05 de MAR?O de 2007, 16:39
Citar
Julga-se. Algo sabido de todos.

Literalmente.

Dá pra traduzir o que significa essa frase?  >:(
Título: Re: Como criar bibliotecas em c
Enviado por: solanoalves em 05 de MAR?O de 2007, 16:40
hHAHHAHEHAUHEHAU achei que você tava tirando sarro da gente ou algo do genero. foi mal ginho
Título: Re: Como criar bibliotecas em c
Enviado por: Diego_Rocha em 05 de MAR?O de 2007, 16:42
É o que diz no meu dicionário:
(https://ubuntuforum-pt.org/proxy.php?request=http%3A%2F%2Fi86.photobucket.com%2Falbums%2Fk109%2Fginho_album%2FScannedpicture.png&hash=6935f8e834a534c7d3369d4a911e738e042b136d)
 Não consegui deixar melhor, é muito antigo, me acompanha deste os primeiros anos
de escola.
Nossa língua é maravilhosa. Era apenas o significado, não uma afirmação.

Da proxima vez voce poderia ser mais direto na sua respota senao deixa todo mundo confuso t++
Título: Re: Como criar bibliotecas em c
Enviado por: Diego_Rocha em 05 de MAR?O de 2007, 18:53
E ai galera aprendi a fazer biblioteca mesmo que seja o basico consegui  ;D ;D vou postar aqui como fiz,

1° uma função, que coloquei o nome de func.c

Código: [Selecionar]
void comando(char *_nome[200])
{
printf("Seu nome é %s\n",_nome);
}

2° criei um header, que chamei de func.h

Código: [Selecionar]

#include <stdio.h>
extern int comando(char *_nome);


3° criei o main, que chamei de main.c

Código: [Selecionar]
#include "func.h"

int main()
{
char nome[200];
printf("Digite seu nome --> ");
scanf("%s", nome);
comando(nome);
return 0;
}

depois compilei da seguinte fomar

Código: [Selecionar]
gcc -c func.c          //esse comando gerou o func.o

depois compilei o programa

Código: [Selecionar]
gcc main.c func.o -o teste

e depois executei e funcionou normal, é claro que isso so foi um teste que fiz so para aprender, e valeu muito
Título: Re: Como criar bibliotecas em c
Enviado por: solanoalves em 05 de MAR?O de 2007, 20:35
Só uma pergunta cara:

Por que criar 2 arquivos se pode faze-lo em um só ?

por exemplo essa função que você fez poderia se resumir assim :


func.h
Código: [Selecionar]
void comando(char *c[200])
{
printf("Seu nome é %s\n",_nome);
}



func.c
Código: [Selecionar]
#include "func.h"

int main()
{
char nome[200];
printf("Digite seu nome --> ");
scanf("%s", nome);
comando(nome);
return 0;
}

pronto daria na mesma.

ai seria só compilar

gcc func.c -o func

1/2 do trabalho feito pelo jeito que aprendeu
Título: Re: Como criar bibliotecas em c
Enviado por: Darcamo em 05 de MAR?O de 2007, 20:37
Citar
Dá uma leitura na seção do libtool na apostila:
http://www.tol.pro.br/portal/component/option,com_tutorial/func,info/item,683/Itemid,31/

Criar bibliotecas é um tópico avançado...

Baixei essa apostila e como eu suspeitava é uma que eu já conhecia a muito tempo (e que me veio logo na cabeça quando li o título do tópico). Ela é muito boa e bem completa. Inclusive na parte que fala de como criar e utilizar uma biblioteca. Sem dúvida um excelente material (e ainda por cima em português) para aprender C++ dentre outras coisas.