Как я могу изменить значение ESCDELAY для C ncurses, когда я статически связываю библиотеки во время компиляции? - PullRequest
0 голосов
/ 04 марта 2020

У меня есть программа, которую я написал с использованием библиотеки C ncurses. В этой программе рядом с верхом у меня есть эта строка:

ESCDELAY = 0;

Эта строка используется для удаления задержки, возникающей при нажатии клавиши escape в ncurses.

Я могу скомпилировать эту программу обычно так:

gcc program.c -o program -lncurses

У меня установлены и настроены правильные библиотеки для соединения * stati c, но когда я пытаюсь статически скомпилировать свою программу:

gcc -static program.c -o program -lncurses

Я получаю эта ошибка:

/usr/bin/ld: /usr/local/lib/libncurses.a(lib_getch.o):(.data+0x0): multiple definition of `ESCDELAY'; /tmp/ccMFQAm6.o:(.bss+0x0): first defined here
collect2: error: ld returned 1 exit status

Когда я удаляю строку ESCDELAY = 0; из своего кода и компилирую ее статически, как раньше, она компилируется и работает просто отлично.

Итак, как я могу статически компилировать мой код при изменении значения ESCDELAY?

1 Ответ

0 голосов
/ 04 марта 2020

Для человека set_escdelay:

Глобальные переменные ESCDELAY и TABSIZE изменяются некоторыми Приложения. Чтобы изменить их в любой конфигурации, используйте функции set_escdelay или set_tabsize. Другие глобальные переменные не могут быть изменены.

Вы должны заменить

ESCDELAY = 0;

на

set_escdelay(0); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...