首页 > 解决方案 > 如何编译 ncurses form_driver_w 测试示例?

问题描述

这里有一个包含大量演示文件的目录ncurses-examples-20200725

[ftp://ftp.invisible-island.net/ncurses-examples/current/ncurses-examples.tar.gz][1]

我想研究这个form_driver_w例子的工作原理,所以我按照 README 文件构建了程序。

如果我运行./form_driver_w,结果是命令行语句:“该程序需要宽 ncurses 和表单库”。

出现该结果是因为以下陈述不正确:

#if USE_WIDEC_SUPPORT && USE_LIBFORM && (defined(NCURSES_VERSION_PATCH) && NCURSES_VERSION_PATCH >= 20131207)

试图在头文件和编译器开关的迷宫中追踪如何以及在何处USE_WIDEC_SUPPORT设置为 true 非常困难。此外,由于源代码使用form_driver_w,我希望编译器链接到 ncursesw。但是编译器调用是这样的:

gcc -g -O2 -o form_driver_w ../ncurses-examples-20200725/form_driver_w.o ../ncurses-examples-20200725/popup_msg.o -L/lib64 -I. -I. -I../test -DHAVE_CONFIG_H -DDATA_DIR=\"/usr/local/share\" -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=600 -D_XPG5 -g -O2 -DNCURSES_STATIC -lform -lmenu -lpanel -lncurses -lutil -lm

我的 Debian Bullseye 安装包含一个form_driver_w/usr/lib/ncurses/examples/目录中调用的二进制文件。该二进制文件运行正确。我不知道它是如何编译的。

编译和运行form_driver_w一定是一件小事。有人知道怎么做吗?

标签: ncurses

解决方案


您必须使用 ncursesw 进行配置:

configure --with-screen=ncursesw

(当然,还有可用的开发库)。

查找此信息的地方是运行

configure --help

其中列出了一些选项:

常规选项:
  --disable-stripping 不剥离(调试信息)已安装的可执行文件
  --enable-string-hacks 解决虚假的编译器/加载器警告
  --with-pkg-config{=path} 启用/禁用 pkg-config
  --disable-echo 不显示“编译”命令
诅咒版本相关选项:
  --with-ncurses-wrap-prefix 用于 ncurses 包装变量的命名前缀
  --disable-widec 禁用对宽字符函数的检查
  --with-curses-dir=DIR 安装 (n)curses 的目录
  --with-screen=XXX 使用指定的curses-libraries
  --with-ncursesw 使用广泛的 ncurses 库
  --with-ncurses 使用 ncurses 库
  --with-pdcurses 编译/链接 pdcurses X11 库
  --with-curses-colr 编译/链接 HPUX 10.x color-curses
  --with-curses-5lib 编译/链接 SunOS 5lib 诅咒
  --with-Xaw3d 与 Xaw 3d 库的链接
  --with-Xaw3dxft 与 Xaw 3d xft 库的链接
  --with-neXtaw 与 neXT Athena 库的链接
  --with-XawPlus 与 Athena-Plus 库的链接
  --with-x 使用 X 窗口系统
  --with-x11-rgb=FILE 包含 X11 rgb 信息的文件 (EPREFIX/lib/X11/rgb.txt)
  --with-form-libname=XXX 覆盖库的表单基名
  --with-menu-libname=XXX 覆盖库的菜单基本名称
  --with-panel-libname=XXX 覆盖库的面板基名
  --disable-panel 禁用面板功能检查
  --disable-menu 禁用对菜单功能的检查
  --disable-form 禁用表单功能检查
测试/开发选项:
  --enable-warnings 测试:打开 gcc 编译器警告
  --with-dmalloc 测试:使用 Gray Watson 的 dmalloc 库
  --with-dbmalloc 测试:使用 Conor Cahill 的 dbmalloc 库
  --with-valgrind 测试:使用 valgrind
  --disable-leaks test:释放永久内存,分析泄漏
  --disable-rpath-hack 不要为其他库添加 rpath 选项

推荐阅读