我正在尝试使用函数tputs()
,但没办法,我总是收到错误消息:
对tputs的未定义的refence
我尝试了很多东西,安装库并将-lcuses, -lncurses, -ltermcaps
等添加到编译行。我包括term.h
和curses.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);