Você pode ter copiado apenas a biblioteca de alto nível, por exemplo, libncurses.so
ou libncursesw.so
, mas o Debian (e distribuições derivadas como o Ubuntu) o configuram com duas bibliotecas ( libtinfo.so
, libtinfow.so
, etc. ). O nome do arquivo real provavelmente termina com a versão principal / secundária, como
libncursesw.so.6.0
O refresh
faz com que as ncurses tentem atualizar a exibição real; que usa a biblioteca de baixo nível. A biblioteca de alto nível faz seu trabalho na memória.
Respondendo à discussão de acompanhamento (que deve ser uma nova pergunta),
- você pode "sempre" criar ncurses com bibliotecas estáticas, mas então teria que vincular novamente qualquer aplicativo usando ncurses.
- para solucionar problemas com bibliotecas compartilhadas, você pode achar útil ter
ldd
estrace
funcionando dentro do chroot, para (a) demonstrar que o nomes de caminho são onde eles são esperados, e (b) os nomes de arquivos corretos são executados.
Se o seu aplicativo foi vinculado apenas a "ncurses", por exemplo,
gcc -o foo foo.c -lncurses
então o vinculador pode não reclamar (já que alguns empacotadores definem as opções do vinculador para permitir isso), mas executar ldd
na biblioteca compartilhada pode mostrar um problema,
ldd libncurses.so.6.0
O programa strace
pode mostrar quais arquivos (incluindo carregar bibliotecas compartilhadas) o programa tenta / obtém.