LINUX.ORG.RU

ncurses не работает в debian под armv7

 , , ,


0

1

Помогите разобраться с проблемой

Написал программу с печатью текста, а именно hello world по этому гайду: https://code-live.ru/post/cpp-ncurses-hello-world/

Собрал библиотеки ncurses-5.9 под arm через этот гайд: http://soft-dev-pro.blogspot.ru/2014/07/cross-compile-ncurses-for-arm.html

Бинарники и либы от ncurses разместил в соответствующие папки

Проект собирается под arm

На индикаторе при запуске программы с печатью выдаётся ошибка связанная с использованием терминала xterm: # ./ncurses_arm Error opening terminal: xterm.

Установка пакета с терминалом не помогла решить проблему. Терминал обнаруживается на блоке: # which $TERM /usr/bin/xterm

Не выполняется функция initscr() «Функция initscr() переводит терминал в curses-режим. Она чистит экран, выделяет память под необходимые данные для работы библиотеки, и инициализирует окно stdscr. Вызов initscr() обязателен перед любым использованием ncurses. В некоторых случаях функция может завершиться неудачно, если не хватило памяти. Впрочем, такие ситуации маловероятны, учитывая ресурсы, предоставленные современным компьютерам и ресурсы, требуемые для нормальной работы библиотеки.»

При запуске самого xterm на блоке выводится следующая ошибка: # xterm Warning: This program is an suid-root program or is being run by the root user. The full text of the error or warning message cannot be safely formatted in this environment. You may get a more descriptive message by running the program as a non-root user or by removing the suid bit on the executable. xterm: Xt error: Can't open display: %s xterm: DISPLAY is not set

Смена терминала по-умолчанию на другой и задание режима с меньшем количеством цветов не помогает Пробовал все вариации линкования 3 возможных библиотек Компилил используя только командную строку: arm-linux-gnueabihf-g++ main.cpp -o main -lncurses Установил пакет libncurses5-dev, с ним тоже не катит

Все библиотеки лежат в тех же директориях, что и на десктопной машине. На форумах часто поднимается этот вопрос, но никакого решения не написано

# ./ncurses_arm
Error opening terminal: xterm

# which $TERM
/usr/bin/xterm

Это не то. Он не исполняемый файл ищет, а записи terminfo о том, какие коды (вроде ^[[0;31;40m в статье) ожидает терминал с типом $TERM.

Список terminfo можно так глянуть (хотя подозреваю, что может есть способ лучше):

find /usr/share/terminfo/ -type f

xaizek ★★★★★
()
Ответ на: комментарий от Anzipex

Может $TERMINFO указывает куда-то не туда, хотя вряд ли. Но в целом можно попробовать какие-нибудь другие значения для $TERM. Особенно то, которое соответствует типу терминала (может «linux»?).

xaizek ★★★★★
()
Ответ на: Решение найдено от Anzipex

Так это в ncurses не то зашито ($TERMINFO не для этого, для локальной базы, а не системной). Ну да, там --prefix= указан во второй статье, вот оно и ищет не там. Стоит собирать с --with-default-terminfo-dir=/usr/share/terminfo.

xaizek ★★★★★
()
Последнее исправление: xaizek (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.