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 ? Si / usr / local / include ncurses / dans le chemin d'inclusion? Devrait-il y avoir un lien entre les fichiers dans le répertoire ncurses / usr / local / include?

Ou est-il une solution plus simple?

Était-ce utile?

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:

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top