Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Lerub

Eu não consigo programar em nCurses (Ubuntu Linux 17.04)

Recommended Posts

Lerub    2

Há meses que eu tento programar com as libs nCurses, mas eu não estou me dando muito bem com isso.

 

O código que eu tentei compilar, dessa vez, é esse:

 


#include <stdlib.h>
#include <curses.h>
#include <signal.h>

static void finish(int sig);

int
main(int argc, char *argv[])
{
    int num = 0;


    (void) signal(SIGINT, finish);      

    (void) initscr();     
    keypad(stdscr, TRUE);
    (void) nonl();        
    (void) cbreak();      
    (void) echo();         

    if (has_colors())
    {
        start_color();

        init_pair(1, COLOR_RED,     COLOR_BLACK);
        init_pair(2, COLOR_GREEN,   COLOR_BLACK);
        init_pair(3, COLOR_YELLOW,  COLOR_BLACK);
        init_pair(4, COLOR_BLUE,    COLOR_BLACK);
        init_pair(5, COLOR_CYAN,    COLOR_BLACK);
        init_pair(6, COLOR_MAGENTA, COLOR_BLACK);
        init_pair(7, COLOR_WHITE,   COLOR_BLACK);
    }

    for (;;)
    {
        int c = getch();     
        attrset(COLOR_PAIR(num % 8));
        num++;

    }

    finish(0);
}

static void finish(int sig)
{
    endwin();

    exit(0);
}

 

Desse tutorial:

 

Para compilar:

gcc -lncurses

 

Saida do comando:

Citação

/tmp/cczryhqq.o: In function `main':
curseslibexperiment.c:(.text+0x28): undefined reference to `initscr'
curseslibexperiment.c:(.text+0x2f): undefined reference to `stdscr'
curseslibexperiment.c:(.text+0x3c): undefined reference to `keypad'
curseslibexperiment.c:(.text+0x41): undefined reference to `nonl'
curseslibexperiment.c:(.text+0x46): undefined reference to `cbreak'
curseslibexperiment.c:(.text+0x4b): undefined reference to `echo'
curseslibexperiment.c:(.text+0x50): undefined reference to `has_colors'
curseslibexperiment.c:(.text+0x5d): undefined reference to `start_color'
curseslibexperiment.c:(.text+0x71): undefined reference to `init_pair'
curseslibexperiment.c:(.text+0x85): undefined reference to `init_pair'
curseslibexperiment.c:(.text+0x99): undefined reference to `init_pair'
curseslibexperiment.c:(.text+0xad): undefined reference to `init_pair'
curseslibexperiment.c:(.text+0xc1): undefined reference to `init_pair'
/tmp/cczryhqq.o:curseslibexperiment.c:(.text+0xd5): more undefined references to `init_pair' follow
/tmp/cczryhqq.o: In function `main':
curseslibexperiment.c:(.text+0xf0): undefined reference to `stdscr'
curseslibexperiment.c:(.text+0xf8): undefined reference to `wgetch'
curseslibexperiment.c:(.text+0x102): undefined reference to `stdscr'
curseslibexperiment.c:(.text+0x10e): undefined reference to `stdscr'
/tmp/cczryhqq.o: In function `finish':
curseslibexperiment.c:(.text+0x13c): undefined reference to `endwin'
collect2: error: ld returned 1 exit status

 

Eu já tentei até retirar os parenteses dos "void" e nada. Eu baixei as lib "libcurses", "libncurses" e todas as outras pelo "apt-get".

Editado por Lerub

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa,

 

Você precisa instalar o pacote libncurses-dev, que tem a curses.h. E faltou informar para o gcc o nome do seu programa (do seu arquivo .c):

$ sudo apt-get install libncurses-dev
$ gcc -o lerub lerub.c -lncurses

Em tempo, é bom se acostumar a usar as opções -W e -Wall do gcc pra ver se tem mais erros no programa. Veja:

$ gcc -W -Wall -o lerub lerub.c -lncurses
lerub.c: In function ‘main’:
lerub.c:36:59: warning: unused variable ‘c’ [-Wunused-variable]
                                                       int c = getch();
                                                           ^
lerub.c:8:10: warning: unused parameter ‘argc’ [-Wunused-parameter]
 main(int argc, char *argv[])
          ^
lerub.c:8:22: warning: unused parameter ‘argv’ [-Wunused-parameter]
 main(int argc, char *argv[])
                      ^
lerub.c: In function ‘finish’:
lerub.c:45:24: warning: unused parameter ‘sig’ [-Wunused-parameter]
 static void finish(int sig)
                        ^

Tem várias variáveis não utilizadas em seu código. Se você ainda tiver desenvolvendo e for utilizá-las mais tarde, tudo bem, mas se não, pode removê-las. :-)

 

Abraços!

 

 

Editado por Fernando Mercês

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×