[minixbr] Re: Biblioteca

  • From: Marcelo Gonçalves <marcelo@xxxxxxxxxxxxxxxxxxxxxxxx>
  • To: <minixbr@xxxxxxxxxxxxx>
  • Date: Fri, 6 Feb 2004 08:50:04 -0300

Por que qdo eu uso, por exemplo,

#include <net/gen/tcp.h>
#include <net/gen/tcp_io.h>

eu nao preciso especificar nada na linha de comando do 'cc' para que ele use
as bibliotecas onde estao as respectivas funcoes?

Eh como se essas bibliotecas fossem padrao ou estivessem no PATH, ou o
compilador simplesmente sabe quais sao elas por default?

Para matar sua curiosidade, to fazendo aquelas funcoes de sockets, pra
facilitar a vida da galera (socket, bind, listen, accept, connect, send,
recv, close). Elas vao me ajudar no meu TCC, que eh uma implementacao do DCE
RPC no Minix. Ateh junho tem q estar 70% pronto. Nao sei exatamente o que
vai ser esse 70%, pq quem define esse escopo eh o orientador, mas creio que
pelo menos a parte de comunicação esteja ok. Não sei se vai dar tempo de
fazer o gerador de UUID e o compilador de IDL. Vamos ver....

Valeu as dicas, vou brincar com isso de noite :-)


Marcelo


----- Original Message ----- 
From: "Luiz Capitulino" <lcapitulino@xxxxxxxxxxxx>
To: <minixbr@xxxxxxxxxxxxx>
Sent: Friday, February 06, 2004 8:48 AM
Subject: [minixbr] Re: Biblioteca



Ah... versao sem acentos:

Ola Marcelo,

On 2/5/2004, "Marcelo Goncalves" <marcelo@xxxxxxxxxxxxxxxxxxxxxxxx>
wrote:

>Essa lista deu uma parada de dezembro pra ca, o q houve?

 Acho que o pessoal ainda esta em ritmo de ferias. :)

>Estou com algumas funcoezinhas implementadas e gostaria de gerar a partir
>delas uma biblioteca que fizesse parte do Minix, que um programador pudesse
>usa-la em seus programas.

 Muito bom, estou curioso para saber o que eh.

>As perguntas: como compilar essas funcoes para que o resultado seja uma
>biblioteca?

 Basta gerar um arquivo objeto:

$ cc -c minhalib.c

 esse comando vai gerar o arquivo minhalib.o. Digamos que em minhalib.c
voce tenha uma funcao cujo o prototipo e':

void alguma_coisa(void);

 Para usa'-la em um programa, digamos teste.c, basta fazer:

#include <minhalib.h> /* deve ter o prototipo */

int main(void)
{
 ....

 alguma_coisa();

 ...
}

 Algora voce compila assim:

$ cc -c teste.c
$ cc -o teste teste.o minhalib.o

 Entendeu ?

>Como usar as funcoes dessa biblioteca num programa qualquer q eu
>(ou qlq outro) venha a fazer no Minix?

 Como eu expliquei acima, mas tem um detalhe. Se forem varias funcoes,
e' melhor criar um arquivo objeto por funcao; isso signifca que no final
voce vai ter varios arquivos ".o".

 Existe uma maneira de agrupar esses arquivo em um so. E' criar um
arquivamento com o programa ar, isso vai gerar um arquivo .a, digamos
minhalib.a. Para criar esse arquivamento, e' algo assim:

$ ar c minhalib.a <arquivos objetos>

 nao tenho certeza da linha de comando, pois estou em uma maquina
Linux, e o ar do Minix =3DE9 diferente do ar do GNU, embora gerem o
mesmo resultado.

 O conteudo de minhalib.a vai ser todos os arquivo objeto que voce
especificar na criacao, e para usar minhalib.a voce vai ter que
especificar algumas opcoes para o compilador. As quais eu tambem
nao lembro, embora acredite que sejam as mesmas do GCC.

 Mas talvez o melhor seja voce criar diretorio (ou usar um existente)
em /usr/src/lib/. Crie um Makefile para ele e uma entrada no Makefile
principal. Dessa maneira sua biblioteca vai ser instalada da maneira
padrao.

 Se voce tiver problemas com as linhas de comando ou algum outro detalhe,
pergunte novamente... A noite vou estar em casa e posso dar um exemplo
mais completo.

Abracos,

-- Capitulino
--
Para se descadastrar, mande um e-mail para:
minixbr-request@xxxxxxxxxxxxx
com ''unsubscribe'' no campo ''Assunto''.

--
Para se descadastrar, mande um e-mail para:
minixbr-request@xxxxxxxxxxxxx
com ''unsubscribe'' no campo ''Assunto''.
From " lcapitulino"@terra.com.br  Fri Feb  6 07:10:37 2004
Received: with ECARTIS (v1.0.0; list minixbr); Fri, 06 Feb 2004 07:10:40 -0500 
(EST)
Return-Path: <" lcapitulino"@terra.com.br>
X-Original-To: minixbr@xxxxxxxxxxxxx
Delivered-To: minixbr@xxxxxxxxxxxxx
Received: from fwappy.com (unknown [12.47.46.151])
        by turing.freelists.org (Avenir Technologies Mail Multiplex) with SMTP 
id 4DADD394CF8
        for <minixbr@xxxxxxxxxxxxx>; Fri,  6 Feb 2004 07:10:37 -0500 (EST)
Received: (qmail 16114 invoked by uid 99); 6 Feb 2004 12:34:59 -0000
Date: 6 Feb 2004 12:34:59 -0000
Message-ID: <20040206123459.16113.qmail@xxxxxxxxxx>
To: minixbr@xxxxxxxxxxxxx
Subject: [minixbr] Re: Biblioteca
Received: from 200.230.190.123 (auth. user lcapitulino@xxxxxxxxxxxxxxxxxxxx)
          by demo.ilohamail.org with HTTP; Fri, 06 Feb 2004 12:34:59 +0000
X-IlohaMail-Blah: lcapitulino@xxxxxxxxxxxxxxxxxxxx
X-IlohaMail-Method: mail() [mem]
X-IlohaMail-Dummy: moo
X-Mailer: IlohaMail/0.8.11 (On: demo.ilohamail.org)
In-Reply-To: <006101c3eca7$5cc7fe10$3d0aa8c0@xxxxxxxxxx>
From: "Luiz Capitulino" <lcapitulino@xxxxxxxxxxxx>
Bounce-To: "Luiz Capitulino" <lcapitulino@xxxxxxxxxxxx>
MIME-Version: 1.0
Content-type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
X-archive-position: 72
X-ecartis-version: Ecartis v1.0.0
Sender: minixbr-bounce@xxxxxxxxxxxxx
Errors-to: minixbr-bounce@xxxxxxxxxxxxx
X-original-sender: lcapitulino@xxxxxxxxxxxx
Precedence: normal
Reply-to: minixbr@xxxxxxxxxxxxx
X-list: minixbr


Marcelo,

On 2/6/2004, "Marcelo Gon=E7alves" <marcelo@xxxxxxxxxxxxxxxxxxxxxxxx>
wrote:

>Por que qdo eu uso, por exemplo,
>
>#include <net/gen/tcp.h>
>#include <net/gen/tcp_io.h>
>
>eu nao preciso especificar nada na linha de comando do 'cc' para que ele use
>as bibliotecas onde estao as respectivas funcoes?

 Voce esta confundindo arquivo de cabecalho com biblioteca de funcao.
Arquivo de cabecalho *nao* e' biblioteca.

 Nos arquivos de cabecalho, voce vai colocar prototipos de funcao e
definicoes globais.

 Na biblioteca vai ter o codigo.

 Voce nao precisa especificar nada na linha de comando pois:

>Eh como se essas bibliotecas fossem padrao ou estivessem no PATH, ou o
>compilador simplesmente sabe quais sao elas por default?

 Elas estao no PATH do compilador, voce pode colocar as suas la tambem.

 Mas repito: nao confunda arquivos de cabecalho com biblioteca. No
exemplo que dei anteriormente, voce poderia colocar o arquivo de
cabecalho "minhalib.h" em /usr/include/marcelo", assim voce incluiria
em
seu programa assim:

#include <macelo/minhalib.h>

 Nao estou certo do lugar correto de minhalib.a, tenho que olhar em um
Minix para lembrar.

>Para matar sua curiosidade, to fazendo aquelas funcoes de sockets, pra
>facilitar a vida da galera (socket, bind, listen, accept, connect, send,
>recv, close). Elas vao me ajudar no meu TCC, que eh uma implementacao do DCE
>RPC no Minix. Ateh junho tem q estar 70% pronto. Nao sei exatamente o que
>vai ser esse 70%, pq quem define esse escopo eh o orientador, mas creio que
>pelo menos a parte de comunica=E7=E3o esteja ok. N=E3o sei se vai dar tempo =
de
>fazer o gerador de UUID e o compilador de IDL. Vamos ver....

 Otimo, maravilhoso... Ja me coloco a disposicao para ajudar nos testes,
mas
isso vai depender de um fator muito imporante: qual licenca voce vai usar
?

-- Capitulino
--
Para se descadastrar, mande um e-mail para:
minixbr-request@xxxxxxxxxxxxx
com ''unsubscribe'' no campo ''Assunto''.

Other related posts: