我正在尝试在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? p>的链接
还是有一些更简单的解决方案?
答案 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.so
,ncursest.so
等)之外,ncurses configure脚本还设置makefile,以便在默认情况下将头文件放在子目录中。这也允许在man page。
但是,某些程序仍假设curses.h
与所有其他ncurses标头一起放在顶层包含搜索路径,并且不会查看子目录。在许多Linux发行版中,ncurses开发包中的问题通常有某种解决方法,但是如果你从源代码编译ncurses,有两种可能的方法来解决这个问题:
CPPFLAGS
或等效内容,如接受的答案所示。它可以工作,但你必须每次都设置适当的编译标志。--enable-overwrite
配置ncurses。这将根据您的--prefix
在顶级包含目录中安装ncurses头文件。 如果您不打算安装备用curses库,那么将ncurses标头放在顶级包含路径中是完全安全的,而Gentoo遵循的方法也是如此。