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 ? Caso / usr / local / include / ncurses estar no caminho incluem? Deve haver um link a partir dos arquivos no diretório ncurses para / usr / local / include?

Ou há alguma solução mais simples?

Foi útil?

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:

  1. 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.
  2. 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 .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top