错误:对'tputs'的未定义引用。尝试了一切,但它不起作用

时间:2014-11-14 13:42:31

标签: c ncurses curses

我正在尝试使用函数tputs(),但没办法,我总是收到错误消息:

  

对tputs的未定义的refence

我尝试了很多东西,安装库并将-lcuses, -lncurses, -ltermcaps等添加到编译行。我包括term.hcurses.h标题。

这里有一些准确性:

包含:

#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <term.h>
#include <curses.h>

tputs call:

tputs(tgetstr ("nd", NULL), 1, my_putchar);

简化的编译行:

  

gcc -Wall -Wextra -std = c99 -lcurses -ltermcap src / read_command.c - $

汇编产生的错误讯息(法语,抱歉):

gcc -Wall -Wextra -std=c99 -lcurses -ltermcap src/read_command.c -o
test /tmp/cclokvcG.o: dans la fonction « exec_special_keys »:
read_command.c:(.text+0x83): référence indéfinie vers « tgetstr »
read_command.c:(.text+0x95): référence indéfinie vers « tputs »
collect2: error: ld returned 1 exit status Makefile:2: recipe for
target 'all' failed make: *** [all] Error 1
你可以帮帮我吗?我真的不明白我的问题。


编辑:问题已解决,我提供的解决方案是为了帮助那些可能有相同行为的人。

这里有两个错误:

-Libraries必须放在编译行的末尾,-lcurse足以用于tgetstr和tputs:

gcc -Wall -Wextra -std=c99 src/read_command.c -lcurses

- 在使用tgetstr和tputs之前,必须使用三行:

static char term_buffer[2048];
char *type = getenv("TERM");
tgetent(term_buffer, type);

0 个答案:

没有答案