首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何调试ncurses?

如何调试ncurses?
EN

Stack Overflow用户
提问于 2022-07-17 09:04:04
回答 3查看 115关注 0票数 -1

我想从ncurses学习一些东西,这样我就可以使用程序集来编写一些简单的函数来绘制图形。

例如,当我进入initscr时,我就在这里,/lib/x86_64-linux-gnu/libncurses.so.6,我看不到任何c代码。你有什么办法解决这个问题吗?

我使用下面的命令来安装ncurses!

代码语言:javascript
复制
wget https://ftp.gnu.org/pub/gnu/ncurses/ncurses-6.2.tar.gz

tar xvzf ncurses-6.2.tar.gz

cd ...

./configure --with-shared --with-normal --with-debug --enable-overwrite

make

sudo make install
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-07-17 09:51:59

你需要链接器libncurses_g.a

gcc -g ... -o ... /usr/lib/libncurses_g.a

票数 0
EN

Stack Overflow用户

发布于 2022-07-18 11:20:36

代码语言:javascript
复制
./configure ...
make
sudo make install

99%的时间安装到/usr/local

在编译和链接时,通常会在通常的/usr/local/include/usr/lib之前咨询/usr/include/usr/lib。但是,在运行时加载共享库时,/usr/local将被完全忽略。为了适应这种情况,你需要做一些特别的事情。

有几种方法可以做到这一点。

  1. -Wl,-rpath=/usr/local/lib添加到链接命令中。
  2. 将LD_LIBRARY_PATH环境变量设置为包含/usr/local/lib的内容。
  3. /usr/local/lib添加到您的/etc/ld.so.conf中(要小心执行)。
票数 0
EN

Stack Overflow用户

发布于 2022-07-18 10:09:09

注意,默认情况下,所有的Linux终端模拟器都支持Unicode (使用UTF-8)以及ANSI转义码

因此,如果要在左上角的亮绿色字母"B“周围打印一个小的红色双壁矩形,程序只需编写以下字符串(用C或程序集表示法,即双引号不是字符串内容的一部分):

代码语言:javascript
复制
"\033[s\033[1;1H\033[0;31m╔═╗\033[0m\033[2;1H\033[0;31m║\033[1;32mB\033[0;31m║\033[0m\033[3;1H\033[0;31m╚═╝\033[0m\033[u"

其中两个字节(27,91 = \033[)构成控制序列引导者CSI。

请记住,write syscall允许返回一个短计数,特别是在写到tty (类似终端的设备)时。如果返回值为正但小于字符串的长度,则需要将指向数据的指针向前推进,从长度中减去返回值,然后再次执行syscall操作,直到返回所需的长度或小于1的值为止(不应该出现0,负值是错误代码)。

ncurses所做的是支持这些代码的各种形式,基本上是所有类似终端的设备,检测通过TERM环境变量使用的正确代码,并提供许多有用的抽象(通过助手函数,如windows等)。但上述,UTF-8和ANSI转义码,工作在大多数情况下,是可行的最低限度的实现。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73010502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档