Python Compiler, curses.h not found
Question
Je tente de construire Python 2.6.2 de la source sur mon système Linux. Il a ncurses installé sur / / usr / local et curses.h est en local / / / usr include / ncurses. Donc curses.h ne se trouve pas sur le chemin d'inclusion, et les paquets échouent dans la version Python.
Quelle est la bonne solution à cela? Python est censé inclure
Ou est-il une solution plus simple?
La solution
Avec de nombreux packages Open Source, vous pouvez définir:
export CPPFLAGS="-I/usr/local/include"
ou même:
export CPPFLAGS="-I/usr/local/include/ncurses"
avant d'exécuter le script de configuration. Je n'ai pas compilé Python assez récemment pour être sûr que fonctionne, mais il probablement - je ncurses installés sous / usr / gnu (car / usr / local / est automonté et contient des antiquités) et je ne me souviens pas avoir à utiliser quoi que ce soit pour l'obtenir à un travail spécial.
revérifié ...
Le script de configuration ne comprend que <curses.h>
. Je devais utiliser:
export CPPFLAGS="-I/usr/gnu/include -I/usr/gnu/include/ncurses"
export LDFLAGS="-L/usr/gnu/lib"
./configure
Pour obtenir le Python (2.5) configurer pour accepter malédictions. Vous souhaitez remplacer 'gnu
' avec 'local
' pour votre configuration.
Autres conseils
Je sais que c'est une question très ancienne, mais le problème continue à me lors de la compilation python 3.6.0 de la source, donc je suppose qu'il est toujours pertinent.
Les versions récentes de ncurses se déclinent en plusieurs saveurs: normal, large support de caractères, filetés. Afin de permettre aux programmeurs de conserver et d'utiliser différentes saveurs, en plus de nommer les bibliothèques différemment (ncursesw.so
, ncursest.so
, etc.), les ncurses script configure met en place le makefile pour mettre les fichiers d'en-tête dans les sous-répertoires par défaut. Cela permet également d'avoir différentes implémentations de malédictions aux côtés ncurses, comme indiqué dans le .
Certains programmes, cependant, encore que supposent curses.h
, ainsi que tous les autres en-têtes ncurses, sont placés dans le haut niveau comprennent des chemins de recherche, et ne cherchera pas dans les sous-répertoires. Dans de nombreuses distributions linux il y a généralement une sorte de solution pour le problème dans les paquets de developement ncurses, mais si vous compilez ncurses de la source, il y a deux approches possibles pour résoudre le problème:
- Utilisation
CPPFLAGS
ou équivalent, comme la réponse acceptée suggère. Il fonctionne, mais vous devez définir les indicateurs de compilation appropriés à chaque fois. - Configuration ncurses avec
--enable-overwrite
. Cela installera les fichiers ncurses en-tête du haut niveau include, selon votre--prefix
.
Si vous ne prévoyez pas d'installer une bibliothèque curses autre, il est tout à fait sûr de mettre les en-têtes ncurses dans le niveau supérieur include_path, et il est l'approche suivie par Gentoo .