4

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

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

还是有一些更简单的解决方案?

4

2 回答 2

8

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

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

甚至:

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

在运行配置脚本之前。我最近还没有编译 Python 以确保它可以工作,但它可能确实 - 我在 /usr/gnu 下安装了 ncurses(因为 /usr/local/ 是自动挂载的并且包含古董)而且我不记得必须使用任何特殊的东西来让它工作。


复核...

配置脚本仅包括<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

于 2009-05-24T01:35:02.833 回答
0

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

最新版本的 ncurses 有几种风格:正常、广泛的字符支持、线程。为了让程序员保持和使用不同的风格,除了以不同的方式命名库(ncursesw.so,ncursest.so等)外,ncurses 配置脚本设置 makefile 以默认将头文件放在子目录中。这也允许在 ncurses 旁边有不同的 curses 实现,如手册页中所述。

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

  1. CPPFLAGS正如公认的答案所暗示的那样,使用或等效。它可以工作,但您必须每次都设置适当的编译标志。
  2. 使用--enable-overwrite. 这将根据您的--prefix.

如果您不打算安装备用的 curses 库,将 ncurses 头文件放在顶级包含路径中是完全安全的,这是Gentoo遵循的方法。

于 2017-03-16T14:58:59.100 回答