编译Python,找不到curses.h

时间:2009-05-24 01:12:19

标签: python configure curses

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

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

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

2 个答案:

答案 0 :(得分:8)

对于许多开源软件包,您可以设置:

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

甚至:

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

在运行configure脚本之前。我最近没有编译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)配置为接受curses。您的配置会将“gnu”替换为“local”。

答案 1 :(得分:0)

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

ncurses的最新版本有多种形式:普通,宽字符支持,线程。为了允许程序员保持和使用不同的风格,除了以不同的方式命名库(ncursesw.soncursest.so等)之外,ncurses configure脚本还设置makefile,以便在默认情况下将头文件放在子目录中。这也允许在man page

中指定的ncurses中使用不同的curses实现

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

  1. 使用CPPFLAGS或等效内容,如接受的答案所示。它可以工作,但你必须每次都设置适当的编译标志。
  2. 使用--enable-overwrite配置ncurses。这将根据您的--prefix在顶级包含目录中安装ncurses头文件。
  3. 如果您不打算安装备用curses库,那么将ncurses标头放在顶级包含路径中是完全安全的,而Gentoo遵循的方法也是如此。