2009-05-24 11 views
2

LinuxシステムでPython 2.6.2をソースからビルドしようとしています。/usr/local /にはncursesがインストールされていますが、curses.hは/ usr/local/include/ncursesにあります。したがって、curses.hはインクルードパスにはなく、これらのパッケージはPythonビルドで失敗します。Pythonをコンパイルするとcurses.hが見つかりません

これには適切な解決策はありますか? Pythonには< ncurses/curses.h>が含まれていますか?/usr/local/include/ncursesをインクルードパスに含めるべきですか? ncursesディレクトリにあるファイルから/ usr/local/includeへのリンクがありますか?

さらに簡単な解決策がありますか?

答えて

5

多くのオープンソースパッケージを使用すると、設定することができます。でも

export CPPFLAGS="-I/usr/local/include" 

かを:

export CPPFLAGS="-I/usr/local/include/ncurses" 

configureスクリプトを実行する前に。最近、Pythonをコンパイルしていないのですが、おそらくそうです - ncursesが/ usr/gnuにインストールされています(/ usr/local /が自動マウントされ、骨董品を含んでいるため)。それを動作させるために特別なものを使用してください。


ダブルチェック...

configureスクリプトは<curses.h>が含まれています。私は使用しなければならなかった:

export CPPFLAGS="-I/usr/gnu/include -I/usr/gnu/include/ncurses" 
export LDFLAGS="-L/usr/gnu/lib" 
./configure 

呪いを受け入れるようにPython(2.5)を設定するには:お使いの設定では、 ''に 'gnu'を置き換えます。

+0

これは私のためのトリックでした。私はCFLAGSを設定しようとしましたが、うまくいかなかったので、CPPFLAGSにする必要がありました。 LD_LAGRARY_PATHにlibncursesがあるので、LDFLAGSは必要ありませんでした。ありがとうございました! – Mojo

0

これは非常に古い質問ですが、ソースからpython 3.6.0をコンパイルするときに問題が発生しているので、それでも問題はないと思います。

最近のバージョンのncursesには、通常のワイド文字サポート、スレッド化されたものがあります。プログラマーが異なるフレーバーを保持して使用できるようにするために、ライブラリの名前を別に指定する(ncursesw.soncursest.soなど)ように、ncurses configureスクリプトはヘッダファイルをデフォルトでサブディレクトリに入れるようmakefileを設定します。これにより、man pageで指定されているように、ncursesと異なるcurses実装を持つこともできます。

しかし、一部のプログラムでは、他のすべてのncursesヘッダーに沿ってcurses.hがトップレベルインクルード検索パスに配置され、サブディレクトリは検索されないものとします。多くのLinuxディストリビューションでは、通常のncursesの開発効率向上パッケージで問題の回避策のいくつかの並べ替えがありますが、ソースからのncursesをコンパイルする場合、問題解決するには、2つの可能なアプローチがあります。

  1. CPPFLAGSまたは同等の使用として、受け入れられた答えは示唆している。それは動作しますが、毎回適切なコンパイルフラグを設定する必要があります。
  2. ncursesを--enable-overwriteで設定しています。これは、あなたの--prefixに従って、ncursesヘッダファイルをトップレベルインクルードディレクトリにインストールします。

あなたが代替cursesライブラリをインストールする予定がない場合は、トップレベルでのncursesヘッダを入れて完全に安全だが、パスが含まれ、それがGentoo続くアプローチです。

+1

ncurses/ncurseswを比較すると、ヘッダーには違いがあります。たとえば、 'sizeof(WINDOW)'です。もちろん、ncurses5/ncurses6はマウスのために異なるビットマスクを使います。 –

+0

@ThomasDickey私は、アイデンティティではなく、単に互換性を評価していました。どうやら、マニュアルページにはヘッダーがソースと互換性があると書かれています。それにかかわらず、質問の一部ではないので、私はその情報の私の答えを取り除いた。 – farsil

関連する問題