未定义对新NCURSES 6.1函数的引用(alloc_pair,reset_color_pairs)

时间:2018-11-29 17:15:59

标签: c++ linux compiler-errors ncurses

我正在尝试在代码中使用这些函数,但均不能正确编译。我收到类似undefined reference to 'alloc_pair'collect2: error: ld returned 1 exit status的错误。其他功能(newwin,printw)可以正常工作。通过查看联机帮助页,似乎已经安装了这两个功能。我还检查了libncurses-dev changelog(使用apt),它列出了6.1版的新上游发行版(GNU ncurses日志显示它具有这些功能)。如何确保其正确安装?

uname -a返回:

Linux hostname 4.15.0-39-generic #42-Ubuntu SMP Tue Oct 23 15:48:01 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

编辑:我还使用if检查来确保我正在使用ncurses 6.1。 (使用NCURSES_VERSION)

1 个答案:

答案 0 :(得分:0)

Ubuntu的ncurses软件包仅支持ABI 5,这是因为2015中ABI 6是标准配置,这使得Ubuntu落后了一些。

release notes中所述,您需要ABI 6才能使用较新的功能:

  

此发行版旨在与ncurses 5.0到6.0兼容。提供对应用程序二进制接口(ABI)的扩展。尽管仍可以将源配置为支持ncurses 5 ABI,但该发行版的目的是提供对ncurses 6 ABI的扩展:

您当然可以自己编译ncurses,或使用已升级到当前ABI的某些发行版,但是该源兼容性表明其他打包程序也可能不是最新的。