Файл INSTALL
в Источник ncurses сообщает, что вам нужно знать:
--disable-database
Use only built-in data. The ncurses libraries normally read terminfo
and termcap data from disk. You can configure ncurses to have a
built-in database, aka "fallback" entries. Embedded applications may
have no need for an external database. Some, but not all of the
programs are useful in this configuration, e.g., reset and tput versus
infocmp and tic.
--with-fallbacks=XXX
Specify a list of fallback terminal descriptions which will be
compiled into the ncurses library. See CONFIGURING FALLBACK ENTRIES.
Команда, указанная в вопросе, не содержит описаний резервных терминалов (например, vt100).
В команде должны быть перечислены описания, которые вы хотите добавить в библиотеку, например,
./configure command - ./configure --host arm64-linux-gnu --prefix=/sw/nic/third-party/ncurses-6.1/arm64/ -with-termlib --enable-termcap --with-caps --disable-database --with-fallbacks=vt100 --without-xterm-new
Поскольку вы отключили базу данных, нет смысла копировать /usr/share/terminfo/*
, а поскольку при этом используется (по умолчанию) статическая библиотека, нет необходимости копировать libncursesw.a во встроенную систему (за исключением редкого случая, когда вы фактически используете набор инструментов компилятора/компоновщика, работающий на машине arm64).
...отвечая на сообщение от 18 ноября: резервная поддержка в библиотеке ncurses используется только в случае, когда setupterm
вызывается (или его вызывающие newterm
, initscr
) см. исходный код< /а>. Например, такие программы, как clear
, будут работать, но не infocmp
.
Для быстрой проверки я запустил это, чтобы создать тестовую копию, включив функцию трассировки ncurses:
#!/bin/sh
unset TERM
unset TERMINFO
unset TERMINFO_DIRS
./configure \
--prefix=/tmp/FOO \
--enable-termcap \
--with-trace \
--without-debug \
--without-ada \
--with-fallbacks=vt100,vt102,screen
make
а потом в ./проги
#!/bin/sh
export TERM=vt100
unset TERMINFO
unset TERMINFO_DIRS
rm -f trace
export NCURSES_TRACE=0xffff
./clear
(выполнение unset
, чтобы не подбирать мое окружение). Файл трассировки не сообщает, откуда берется результирующее описание. Это делается до вызова set_curterm
. Если бы это было прочитано из файла, это бы появилось. Но команда clear
работает. Вот полная трассировка, показывающая неудачные вызовы для доступа к файлу и, наконец, вызов tputs
с ожидаемыми данными:
TRACING NCURSES version 6.1.20181117 (tracelevel=0xffff)
called {setupterm("vt100",0,(nil))
your terminal name is vt100
using 2048 for getstr limit
+ called {_nc_first_db
duplicate /tmp/FOO/share/terminfo
not found /users/tom/.terminfo
not found /tmp/FOO/share/terminfo
not found /etc/termcap
not found /usr/share/misc/termcap
+ return }
+ called {set_curterm(0x242a2a0)
+ return }(nil)
+ called {def_shell_mode((nil)) ->term 0x242a2a0
_nc_get_tty_mode(0): iflags: {BRKINT, IXON} cflags: {CREAD} CS8 lflags: {ISIG}
+ return }0
+ called {def_prog_mode((nil)) ->term 0x242a2a0
_nc_get_tty_mode(0): iflags: {BRKINT, IXON} cflags: {CREAD} CS8 lflags: {ISIG}
+ return }0
+ called {baudrate((nil))
+ return }38400
screen size: terminfo lines = 24 columns = 80
SYS screen size: environment LINES = 40 COLUMNS = 80
screen size is 40x80
TABSIZE = 8
return }0
tputs( = "\e[H\e[J$<50>", 40, 0x403630) called
called {delay_output(0x7ffca32a2f50,50)
return }0
called {tigetstr((nil), E3)
return }(cancelled)
tputs((cancelled), 40, 0x403630) called
Запуск strings
на clear
показывает следующее:
vt100|vt100-am|dec vt100 (w/advanced video)
это полная строка из исходного файла terminfo.
person
Thomas Dickey
schedule
15.11.2018