Compilando Python, não curses.h encontrado
Pergunta
Eu estou tentando construir Python 2.6.2 a partir da fonte no meu sistema Linux. Tem ncurses instalados em / usr / local /, e curses.h é em / usr / local / include / ncurses. Então curses.h não é encontrado no caminho de inclusão, e os pacotes falhar na compilação Python.
O que é a solução certa para isso? Python é suposto que incluem
Ou há alguma solução mais simples?
Solução
Com muitos pacotes de código aberto, você pode definir:
export CPPFLAGS="-I/usr/local/include"
ou mesmo:
export CPPFLAGS="-I/usr/local/include/ncurses"
antes de executar o script configure. Eu não tenho compilado Python recentemente o suficiente para ter certeza que funciona, mas provavelmente não - Tenho ncurses instalado em / usr / gnu (porque / usr / local / é montado e contém antiguidades) e eu não me lembro de ter que uso nada de especial para obtê-lo para o trabalho.
Double-checked ...
O script configure inclui apenas <curses.h>
. Eu tive que usar:
export CPPFLAGS="-I/usr/gnu/include -I/usr/gnu/include/ncurses"
export LDFLAGS="-L/usr/gnu/lib"
./configure
Para obter o Python (2,5) configure a aceitar maldições. Você iria substituir 'gnu
' com 'local
' para a sua configuração.
Outras dicas
Eu sei que esta é uma questão muito antiga, mas o problema ainda me ocorreu durante a compilação Python 3.6.0 a partir da fonte, então eu acho que ainda é relevante.
As versões recentes do ncurses vêm em vários sabores: normal, suporte a caracteres de largura, com rosca. A fim de permitir que os programadores para manter e usar diferentes sabores, além de nomear as bibliotecas de forma diferente (ncursesw.so
, ncursest.so
, etc), os conjuntos de script ncurses configurar até o makefile para colocar os arquivos de cabeçalho em subdiretórios por padrão. Isso também permite ter diferentes maldições implementações ao lado ncurses, conforme especificado no homem página .
Alguns programas, no entanto, ainda assumir que curses.h
, ao longo de todos os outros cabeçalhos ncurses, são colocados no nível superior incluem caminhos de pesquisa, e não olhar para subdiretórios. Em muitas distribuições Linux geralmente há algum tipo de solução para o problema em ncurses developement, mas se você está compilando ncurses de origem, há duas abordagens possíveis para resolver o problema:
- Usando
CPPFLAGS
ou equivalente, como a resposta aceita sugere. Ele funciona, mas você tem que definir os sinalizadores de compilação apropriados de cada vez. - Configuração ncurses com
--enable-overwrite
. Isto irá instalar arquivos as ncurses cabeçalho no nível superior incluem diretório, de acordo com o seu--prefix
.
Se você não pretende instalar uma biblioteca maldições alternativo, é completamente seguro para colocar os cabeçalhos ncurses no nível superior incluem caminho, e é a abordagem seguida por Gentoo .