在macOS(OSX)上的ncurses找不到xterm-256color

时间:2016-10-03 13:18:52

标签: c++ macos ncurses

我正在尝试在macOS上使用ncurses 6.0。我已经下载了项目并使用提供的makefile构建了C ++演示。但是,当我运行演示时,我收到错误:

  

打开终端时出错:xterm-256color。

这可能是相关的:我的x目录中没有terminfo文件夹:

$ ls /usr/share/terminfo/
31  36  45  51  64  69  6e  73  78
32  37  4c  58  65  6a  6f  74  7a
33  38  4d  61  66  6b  70  75
34  39  4e  62  67  6c  71  76
35  41  50  63  68  6d  72  77

该演示在Debian上正常运行。

我的配置输出是:

** Configuration summary for NCURSES 6.0 20150808:

       extended funcs: yes
       xterm terminfo: xterm-new

        bin directory: /usr/local/bin
        lib directory: /usr/local/lib
    include directory: /usr/local/include/ncurses
        man directory: /usr/local/share/man
   terminfo directory: /usr/local/share/terminfo

** Include-directory is not in a standard location

因为我懒惰而且没有阅读手册,所以我没有运行完整的设置程序。跑完后:

./configure
make
make install

它现在有效。

1 个答案:

答案 0 :(得分:2)

构建ncurses时,configure脚本会告诉您最终安装位置。如果您在OSX上没有选项,它将如下所示:

creating headers.sh

** Configuration summary for NCURSES 6.0 20160409:

       extended funcs: yes
       xterm terminfo: xterm-new

        bin directory: /usr/local/bin
        lib directory: /usr/local/lib
    include directory: /usr/local/include/ncurses
        man directory: /usr/local/share/man
   terminfo directory: /usr/local/share/terminfo

** Include-directory is not in a standard location

您可以覆盖terminfo目录的位置(读取INSTALL文件),或通过设置TERMINFO和/或TERMINFO_DIRS环境变量在运行时告诉库。但是,如果不进行其中一项操作,它将在不同的位置查找终端数据库。

ncurses configure脚本为某些系统(主要是基于Linux的)提供--prefix=/usr选项,因为它应该是系统curses库(同样,读取INSTALL)。 OSX在这里并不奇怪。

OSX与通常的情况不同:它的文件系统(通常)忽略了大写/小写名称之间的区别。 configure脚本会对此进行检查,如果是这样,它会在变通方法中编译,将这些单个字母编码为十六进制数字。例如,0x78是" x"。