[FUG-BR] C/C++ - Desenvolvimento no FreeBSD

2007-02-27 Por tôpico gethostbyname
O meu email é baseado em opiniões pessoais. Qual ferramenta ou
biblioteca utilizar pode ser algo muito pessoal.

Você domina o gcc? Autoconf, automake e libtool? Seria bom também
controle de versão (subversion, de preferência) para você já ir se
acostumando com técnicas/ferramentas usadas em projetos de software livre.

*Ferramentas*:
Se o projeto que você quiser desenvolver for grande, eu sugiro uma IDE
para automatizar o desenvolvimento: Anjuta (a versão 2.x estável está
quase desenvolvida, eu acho. Essa nova versão vai ser excepcional.),
Eclipse ou NetBeans. As duas últimas desenvolvidas em JAVA; portanto,
você vai precisar de uma máquina melhor devido a lentidão inerente a
JAVA (Eu muito gosto da linguagem JAVA, da API e tal; mas, para mim, é
uma lentidão [na inicialização] inquestionável). Caso contrário, utilize
o emacs mesmo como ferramenta no modo texto.

*Sobre as funções que o sistema disponbiliza*:
O que exatamente você pretende aprender/fazer no sistema?
Na maioria das vezes você vai utilizar:
- bibliotecas externas ao SO, geralmente portáveis
- bibliotecas relacionadas a C e/ou C++
- bibliotecas relacionadas ao POSIX

 Nada verdadeiramente específico do FreeBSD. É justamente essa a causa
da portabilidade entre os unix(s): devido a padronização das linguagens
C/C++ e do padrão POSIX.
Você deveria procurar ler é sobre o padrão POSIX, então.

Eu recomendo esses livros que abordam algumas coisas do POSIX:

* Practical Unix programming : a guide to concurrency, communication,
and multithreading -- Esse livro é bem antigo, mas tem muitas
explicações boas nele. Você poderia pular algumas partes que ele foge do
POSIX atual e ler as outras partes normalmente.
Robbins, Kay A

* POSIX Programmer's Guide
Writing Portable UNIX Programs with the POSIX.1 Standard
Donald A. Lewine
Data General Corporation

É bom ter a própria especificação do POSIX para consulta. O padrão atual
tem quase 4000 páginas hehehe. Tente procurar uma versão completa na
rede P2P. Se não encontrar, me diga. Eu consegui essa versão completa
gratuitamente de uma pessoa do OpenGroup que gentilmente me adicionou
como colaborador do padrão só para eu ter acesso à versão completa. Eu
gostei da atitude desse cara que coordena uma lista de discussão do
posix dentro do OpenGroup.

até,
gethostbyname

Henrique Berenguel escreveu:
 Sim ,gostaria de trabalhar com desenvolvimento em C ou C++ no Free, C e C++
 eu conheço bem, porem, o ambiente de desenvolvimento do Free, ferramentas,
 as funções que o sistema disponibiliza, isso eu não conheço muito bem, nesse
 sentido que gostaria de livros que me ajudem... 

 obrigado
   

-
Histórico: http://www.fug.com.br/historico/html/freebsd/
Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd


Re: [FUG-BR] C/C++

2007-02-23 Por tôpico Paulo Pires
On 2/21/07, Rodrigo Ferreira [EMAIL PROTECTED] wrote:
 Bom dia lista, venho tentando a algum tempo compilar/rodar arquivos .c e
 .cpp, porem não obtive sucesso, antes de migrar para o FreeBSD eu
 utilizava o turbo c++ no win, e agora no Free estou tentando usar o
 gcc/g++, só que no programa mais simples que estou tentando fazer
 aparece erro.

 Programa teste:

 #include /usr/include/stdio.h
 #include /usr/include/conio.h

 void main (void)
 {
 puts (Alo Mundo);
 getch();
 }

 dai quando eu dou g++ teste.cpp, aparece esses erros:
 teste.cpp:2:32: /usr/include/conio.h: No such file or directory
 teste.cpp:5: error: `main' must return `int'
 teste.cpp: In function `int main(...)':
 teste.cpp:7: error: `getch' undeclared (first use this function)
 teste.cpp:7: error: (Each undeclared identifier is reported only once
 for each function it appears in.)

Um dos erros que eu ia apontar já foi apontado pelo compilador C++ (em
C não seria indicado como erro): a função main() deve retornar um
valor inteiro (int), de modo que tem que ser declarada como int
main() ou int main(int argc, char **argv) (ou ainda int main(int
argc, char *argv[])).  A isso está ligado ou outro erro no seu
programa, mas que não está indicado acima: para sair da função que
retorna int, você tem obrigatoriamente que ter um comando return
valor;, onde valor é uma expressão com valor inteiro (geralmente --
especialmente no UNIX -- main() retorna 0 quando é bem sucedido), ou
uma chamada exit(valor);, onde valor também é inteiro.

Quando você está incluindo arquivos de cabeçalho da biblioteca padrão,
a convenção é usar '#include cabeçalho.h', ao invés de '#include
cabeçalho.h'.  Esta última forma, usando aspas, é usada para
arquivos de cabeçalho criados pelo próprio programador, para
distingüi-los dos cabeçalhos padronizados.  Também não é usual colocar
o caminho completo dos arquivos, especialmente quando se está usando
cabeçalhos da biblioteca padrão (com , e não com aspas, pois o
compilador sabe como encontrá-los).

Como outros já disseram, conio.h não é um cabeçalho padrão e a função
getch(), que seria declarada nesse cabeçalho específico dos
compiladores da Borland, também não é comumente aceita no UNIX (pelo
menos não com o mesmo sentido que teria no compilador da Borland).
Principalmente enquanto você está aprendendo, procure aprender a
linguagem padrão, ao invés de uma implementação específica.

Outra coisa: seu arquivo indica programa em C++, mas o código que você
escreveu é C.  Não que esteja estritamente errado, mas a minha
recomendação pessoal é que se você vai usar apenas C em um módulo de
programa, use o compilador C (costuma ser mais rápido) e coloque nos
arquivos a extensão .c, ao invés de .cpp ou .cc.  Ou, então,
aprenda logo C++ através de exemplos usando recursos próprios do C++,
se quiser usar os recursos que essa linguagem oferece antes de ficar
viciado em C puro e simples.

-- 
Um abraço.
Paulo A. P. Pires

... Qui habet aurem audiat quid Spiritus dicat ecclesiis.
-
Histórico: http://www.fug.com.br/historico/html/freebsd/
Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd


[FUG-BR] C/C++

2007-02-21 Por tôpico Rodrigo Ferreira
Bom dia lista, venho tentando a algum tempo compilar/rodar arquivos .c e 
.cpp, porem não obtive sucesso, antes de migrar para o FreeBSD eu 
utilizava o turbo c++ no win, e agora no Free estou tentando usar o 
gcc/g++, só que no programa mais simples que estou tentando fazer 
aparece erro.

Programa teste:

#include /usr/include/stdio.h
#include /usr/include/conio.h

void main (void)
{
puts (Alo Mundo);
getch();
}

dai quando eu dou g++ teste.cpp, aparece esses erros:
teste.cpp:2:32: /usr/include/conio.h: No such file or directory
teste.cpp:5: error: `main' must return `int'
teste.cpp: In function `int main(...)':
teste.cpp:7: error: `getch' undeclared (first use this function)
teste.cpp:7: error: (Each undeclared identifier is reported only once 
for each function it appears in.)


eu sei que 1 erro é que ele não esta encontrando o conio.h, mais eu não 
consegui localizar ele.

Alguem poderia me dar um help para tentar compilar isso?

Grato
-
Histórico: http://www.fug.com.br/historico/html/freebsd/
Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd


Re: [FUG-BR] C/C++

2007-02-21 Por tôpico Douglas Santos
  Original Message 
 Subject: [FUG-BR] C/C++
 From: Rodrigo Ferreira [EMAIL PROTECTED]
 Date: Wed, February 21, 2007 6:46 am
 To: freebsd@fug.com.br
 
 Bom dia lista, venho tentando a algum tempo compilar/rodar arquivos .c e 
 .cpp, porem não obtive sucesso, antes de migrar para o FreeBSD eu 
 utilizava o turbo c++ no win, e agora no Free estou tentando usar o 
 gcc/g++, só que no programa mais simples que estou tentando fazer 
 aparece erro.
 
 Programa teste:
 
 #include /usr/include/stdio.h
 #include /usr/include/conio.h
 
 void main (void)
 {
 puts (Alo Mundo);
 getch();
 }
 
 dai quando eu dou g++ teste.cpp, aparece esses erros:
 teste.cpp:2:32: /usr/include/conio.h: No such file or directory
 teste.cpp:5: error: `main' must return `int'
 teste.cpp: In function `int main(...)':
 teste.cpp:7: error: `getch' undeclared (first use this function)
 teste.cpp:7: error: (Each undeclared identifier is reported only once 
 for each function it appears in.)
 
 
 eu sei que 1 erro é que ele não esta encontrando o conio.h, mais eu não 
 consegui localizar ele.

Voce nao conseguiu localizar ele porque ele nao existe.
Recomendo algum livro de programacao para UNIX.

$ cat teste.cpp
#include stdio.h

int main (void)
{
puts (Alo Mundo);
getchar();
}

$ g++ -o teste teste.cpp

-
Histórico: http://www.fug.com.br/historico/html/freebsd/
Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd


Re: [FUG-BR] C/C++

2007-02-21 Por tôpico Augusto Cesar
On 2/21/07, Rodrigo Ferreira [EMAIL PROTECTED] wrote:
 Bom dia lista, venho tentando a algum tempo compilar/rodar arquivos .c e
 .cpp, porem não obtive sucesso, antes de migrar para o FreeBSD eu
 utilizava o turbo c++ no win, e agora no Free estou tentando usar o
 gcc/g++, só que no programa mais simples que estou tentando fazer
 aparece erro.
(...)

A biblioteca conio.h não existe no padrão ANSI C, é específica do
Winblows. Ou seja, você tem que adaptar seu código.
-
Histórico: http://www.fug.com.br/historico/html/freebsd/
Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd


Re: [FUG-BR] C/C++

2007-02-21 Por tôpico gethostbyname
Bom, o compilador não vai encontrar o conio.h de maneira alguma mesmo
porque esse arquivo de cabeçalho é de uma biblioteca específica do Windows.
Eu não conheço bem as funções declaradas em conio.h, mas creio que elas
devam ser bastante obsoletas. Portanto, procure algo melhor.

Sugestões:

* Tente estudar C++ ou JAVA invés de C.
* Não estude através de qualquer livro que utilize bibliotecas
específicas do Win, quanto mais bibliotecas obsoletas. Nunca perca tempo
com Herbert Schmit (eu acho que é assim que se escreve). Você tem que
ter acesso a alguma biblioteca pública também, mas se não tiver:
www.ebooksportal.org e tem muitos livros bons em inglês na rede do emule
também.
* Não desista do gcc/g++ e do ambiente Linux/FreeBSD. Programar no
Windows é muito muito mais difícil na minha opinião. O compilador da MS
é um lixo (embora tenha melhorado muito no VS 2005) e conseguir
informações em certas áreas é bem mais complicado. Quando você quiser
alguma informação sobre uma função no FreeBSD, comece pelo arquivo de
inclusão. Bem mais prático, não?
* Você não necessitará de uma IDE no FreeBSD já que você pode utilizar o
vi ou emacs, mas se necessitar: Anjuta ou NetBeans (com).

--
Veja o comentário no arquivo conio.h do Visual Studio 2005:

*Purpose:
*   This include file contains the function declarations for
*   the MS C V2.03 compatible console I/O routines.
--
Se você não quiser escutar a minha sugestão n° 1, tudo bem:
Troque a linha 1 por #include stdio.h
Delete a linha 2 e a linha 7
Se você estiver utilizando alguma IDE, invés de getch() tente pausar o
programa através de um debugger.

1#include /usr/include/stdio.h
2#include /usr/include/conio.h
3
4void main (void)
5{
6puts (Alo Mundo);
7getch();
8}


--

gethostbyname



Rodrigo Ferreira escreveu:
 Bom dia lista, venho tentando a algum tempo compilar/rodar arquivos .c e 
 .cpp, porem não obtive sucesso, antes de migrar para o FreeBSD eu 
 utilizava o turbo c++ no win, e agora no Free estou tentando usar o 
 gcc/g++, só que no programa mais simples que estou tentando fazer 
 aparece erro.

 Programa teste:

 #include /usr/include/stdio.h
 #include /usr/include/conio.h

 void main (void)
 {
 puts (Alo Mundo);
 getch();
 }

 dai quando eu dou g++ teste.cpp, aparece esses erros:
 teste.cpp:2:32: /usr/include/conio.h: No such file or directory
 teste.cpp:5: error: `main' must return `int'
 teste.cpp: In function `int main(...)':
 teste.cpp:7: error: `getch' undeclared (first use this function)
 teste.cpp:7: error: (Each undeclared identifier is reported only once 
 for each function it appears in.)


 eu sei que 1 erro é que ele não esta encontrando o conio.h, mais eu não 
 consegui localizar ele.

 Alguem poderia me dar um help para tentar compilar isso?

 Grato
 -
 Histórico: http://www.fug.com.br/historico/html/freebsd/
 Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd

   

-
Histórico: http://www.fug.com.br/historico/html/freebsd/
Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd


Re: [FUG-BR] C/C++

2007-02-21 Por tôpico Ricardo Nabinger Sanchez
On Wed, 21 Feb 2007 10:46:18 +
Rodrigo Ferreira [EMAIL PROTECTED] wrote:

 eu sei que 1 erro é que ele não esta encontrando o conio.h, mais eu não 
 consegui localizar ele.
 
 Alguem poderia me dar um help para tentar compilar isso?

conio.h significa Console I/O, e acho que só os compiladores da Borland
oferecem isso.  Não tem pra UNIX (que eu saiba), embora seja só uma questão de
fazer.  O mais apropriado é tu identificar o que tu realmente usa na conio.h
e ver se encontra similares na stdio.h, stdlib.h e unistd.h.  Se não
encontrar, pode ser que seja algo muito MS-DOS.

Como sugestão, dê uma olhada na biblioteca ncurses (google ncurses), que
provavelmente terá todas as funcionalidades que tu busca de console, além de
ser altamente portável.

A parte mais difícil, de longe, será aceitar a transição abrupta de telas DOS
para terminais TTY UNIX (não pode mais escrever diretamente na memória de
vídeo).  :)

Últimas dicas: em UNIX, getch() existe como getc(), na stdio.h.  Os includes
em geral tu não fará com o caminho absoluto, apenas #include stdio.h,
pois tu não tem certeza de como o usuário instalou o compilador dele (ie, os
arquivos .h podem estar em /usr/local/gcc-4.1.1/include ou algum outro
diretório que ele tenha inventado).  Caso o compilador não encontre os
arquivos, tu inclui diretórios de busca com -I/usr/local/gcc-4.1.1 -I., por
exemplo.  gcc(1) tem mais detalhes.

Função main() em UNIX precisa retornar int.  Isso é convenção.

Teu programa ficaria assim:


#include stdio.h

int main()
{
puts(Alo Mundo);
/* getc() requer um FILE* como parâmetro, stdin é a entrada padrão */
getc(stdin);
/* programas UNIX costumam retornar 0 em caso de sucesso, e outro valor
qualquer para indicar que houve erro -- a critério do programador */
return 0;
}


-- 
Ricardo Nabinger Sanchez [EMAIL PROTECTED],wait4.org}
Powered by FreeBSD

  Left to themselves, things tend to go from bad to worse.
-
Histórico: http://www.fug.com.br/historico/html/freebsd/
Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd


Re: [FUG-BR] C/C++

2007-02-21 Por tôpico Rodrigo Ferreira
gethostbyname wrote:
 Bom, o compilador não vai encontrar o conio.h de maneira alguma mesmo
 porque esse arquivo de cabeçalho é de uma biblioteca específica do Windows.
 Eu não conheço bem as funções declaradas em conio.h, mas creio que elas
 devam ser bastante obsoletas. Portanto, procure algo melhor.

 Sugestões:

 * Tente estudar C++ ou JAVA invés de C.
 * Não estude através de qualquer livro que utilize bibliotecas
 específicas do Win, quanto mais bibliotecas obsoletas. Nunca perca tempo
 com Herbert Schmit (eu acho que é assim que se escreve). Você tem que
 ter acesso a alguma biblioteca pública também, mas se não tiver:
 www.ebooksportal.org e tem muitos livros bons em inglês na rede do emule
 também.
 * Não desista do gcc/g++ e do ambiente Linux/FreeBSD. Programar no
 Windows é muito muito mais difícil na minha opinião. O compilador da MS
 é um lixo (embora tenha melhorado muito no VS 2005) e conseguir
 informações em certas áreas é bem mais complicado. Quando você quiser
 alguma informação sobre uma função no FreeBSD, comece pelo arquivo de
 inclusão. Bem mais prático, não?
 * Você não necessitará de uma IDE no FreeBSD já que você pode utilizar o
 vi ou emacs, mas se necessitar: Anjuta ou NetBeans (com).

 --
 Veja o comentário no arquivo conio.h do Visual Studio 2005:

 *Purpose:
 *   This include file contains the function declarations for
 *   the MS C V2.03 compatible console I/O routines.
 --
 Se você não quiser escutar a minha sugestão n° 1, tudo bem:
 Troque a linha 1 por #include stdio.h
 Delete a linha 2 e a linha 7
 Se você estiver utilizando alguma IDE, invés de getch() tente pausar o
 programa através de um debugger.

 1#include /usr/include/stdio.h
 2#include /usr/include/conio.h
 3
 4void main (void)
 5{
 6puts (Alo Mundo);
 7getch();
 8}


 --

 gethostbyname



 Rodrigo Ferreira escreveu:
   
 Bom dia lista, venho tentando a algum tempo compilar/rodar arquivos .c e 
 .cpp, porem não obtive sucesso, antes de migrar para o FreeBSD eu 
 utilizava o turbo c++ no win, e agora no Free estou tentando usar o 
 gcc/g++, só que no programa mais simples que estou tentando fazer 
 aparece erro.

 Programa teste:

 #include /usr/include/stdio.h
 #include /usr/include/conio.h

 void main (void)
 {
 puts (Alo Mundo);
 getch();
 }

 dai quando eu dou g++ teste.cpp, aparece esses erros:
 teste.cpp:2:32: /usr/include/conio.h: No such file or directory
 teste.cpp:5: error: `main' must return `int'
 teste.cpp: In function `int main(...)':
 teste.cpp:7: error: `getch' undeclared (first use this function)
 teste.cpp:7: error: (Each undeclared identifier is reported only once 
 for each function it appears in.)


 eu sei que 1 erro é que ele não esta encontrando o conio.h, mais eu não 
 consegui localizar ele.

 Alguem poderia me dar um help para tentar compilar isso?

 Grato
 -
 Histórico: http://www.fug.com.br/historico/html/freebsd/
 Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd

   
 

 -
 Histórico: http://www.fug.com.br/historico/html/freebsd/
 Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd


   
Po pessoal, valeu, consegui compilar com a ajuda de voces.
Era esse empurrãozinho que tava faltando pra mim, grato.
-
Histórico: http://www.fug.com.br/historico/html/freebsd/
Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd