Compilazione Python, non curses.h trovato
Domanda
Sto cercando di costruire Python 2.6.2 dai sorgenti sul mio sistema Linux. Ha ncurses installati su / / curses.h local /, e usr è su / / / include / ncurses locali usr. Quindi curses.h non si trova sul percorso di inclusione, e quei pacchetti fallire nel costruire Python.
Qual è la giusta soluzione per questo? È Python dovrebbe includere
O c'è qualche soluzione più semplice?
Soluzione
Con molti pacchetti Open Source, è possibile impostare:
export CPPFLAGS="-I/usr/local/include"
o anche:
export CPPFLAGS="-I/usr/local/include/ncurses"
prima di eseguire lo script di configurazione. Non ho compilato Python abbastanza recente per essere sicuri che funziona, ma probabilmente fa - ho ncurses installati sotto / usr / GNU (perché / usr / local / è Automounted e contiene oggetti d'antiquariato) e non mi ricordo dover utilizzare nulla di speciale per farlo funzionare.
ricontrollato ...
Lo script di configurazione include solo <curses.h>
. Ho dovuto usare:
export CPPFLAGS="-I/usr/gnu/include -I/usr/gnu/include/ncurses"
export LDFLAGS="-L/usr/gnu/lib"
./configure
Per ottenere il Python (2.5) configurare per accettare maledizioni. Si potrebbe sostituire 'gnu
' con 'local
' per la configurazione.
Altri suggerimenti
So che questa è una domanda molto vecchio, ma il problema ancora venuto in mente quando si compila pitone 3.6.0 dai sorgenti quindi credo che sia ancora rilevante.
Le versioni recenti di ncurses sono disponibili in diversi gusti:, supporto normale carattere di larghezza, filettati. Al fine di consentire ai programmatori di mantenere e utilizzare diversi gusti, oltre a nominare le librerie in modo diverso (ncursesw.so
, ncursest.so
, ecc), le ncurses configurare script imposta il makefile per mettere i file di intestazione nelle sottodirectory per impostazione predefinita. Questo permette anche di avere diverse imprecazioni implementazioni accanto ncurses, come specificato nella pagina man .
Alcuni programmi, tuttavia, ancora per scontato che curses.h
, lungo tutte le altre intestazioni ncurses, sono collocati nel livello superiore comprendono percorsi di ricerca, e non guardare in sottodirectory. In molte distribuzioni Linux di solito c'è una sorta di soluzione per il problema in pacchetti ncurses developement, ma se si sta compilando ncurses dalla sorgente, ci sono due possibili approcci per risolvere il problema:
- Uso
CPPFLAGS
o equivalente, come suggerisce la risposta accettata. Funziona, ma è necessario impostare i flag di compilazione appropriate ogni volta. - Configurazione ncurses con
--enable-overwrite
. Questo installerà i ncurses intestazione file nella directory di livello superiore comprendono, secondo il vostro--prefix
.
Se non si prevede di installare una libreria maledizioni alternativo, è completamente sicuro di mettere le intestazioni ncurses nel livello più alto include il percorso, ed è l'approccio seguito da Gentoo .