我正在尝试在我的 Linux 系统上从源代码构建 Python 2.6.2。ncurses 安装在 /usr/local/ 上,curses.h 位于 /usr/local/include/ncurses 上。因此,在包含路径中找不到curses.h,并且这些包在Python 构建中失败。

对此正确的解决方案是什么?Python 应该包含 <ncurses/curses.h> 吗?/usr/local/include/ncurses 应该在包含路径中吗?ncurses 目录中的文件是否应该存在到 /usr/local/include 的链接?

或者有一些更简单的解决方案吗?

有帮助吗?

解决方案

使用很多开源软件包,您可以设置:

export CPPFLAGS="-I/usr/local/include"

甚至:

export CPPFLAGS="-I/usr/local/include/ncurses"

运行配置脚本之前。我还没有编译的Python最近足够,以确保这样的作品,但它可能不会 - 我在/ usr / GNU ncurses的安装(因为在/ usr /本地/被挂载,并包含古董),我不记得有向用什么特别的得到它的工作。


双检...

配置脚本仅包括<curses.h>。我不得不使用:

export CPPFLAGS="-I/usr/gnu/include -I/usr/gnu/include/ncurses"
export LDFLAGS="-L/usr/gnu/lib"
./configure

要得到的Python(2.5)配置为接受诅咒。你会替换“gnu”与您的配置“local”。

其他提示

我知道这是一个非常老的问题,但是当我从源代码编译 python 3.6.0 时仍然出现这个问题,所以我想它仍然相关。

ncurses 的最新版本有多种风格:正常,宽字符支持,线程。为了允许程序员保留和使用不同的风格,除了以不同的方式命名库之外(ncursesw.so, ncursest.so, 等),ncurses 配置脚本设置 makefile 默认将头文件放入子目录中。这还允许与 ncurses 一起具有不同的 curses 实现,如 手册页.

然而,一些程序仍然假设 curses.h, 与所有其他 ncurses 标头一起,放置在顶级包含搜索路径中,并且不会查找子目录。在许多 Linux 发行版中,ncurses 开发包中通常有某种解决方法来解决该问题,但如果您从源代码编译 ncurses,则有两种可能的方法来解决该问题:

  1. 使用 CPPFLAGS 或同等内容,正如已接受的答案所暗示的那样。它可以工作,但是您每次都必须设置适当的编译标志。
  2. 配置 ncurses --enable-overwrite. 。这将根据您的情况将 ncurses 头文件安装在顶级包含目录中 --prefix.

如果您不打算安装备用的curses库,那么将ncurses标头放在顶级包含路径中是完全安全的,这是遵循的方法 根图.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top