Я знаю, что это очень старый вопрос, но проблема все еще возникала у меня при компиляции Python 3.6.0 из исходного кода, поэтому я думаю, что он все еще актуален.
Последние версии ncurses доступны в нескольких вариантах: обычный, поддержка широких символов, многопоточный. Чтобы позволить программистам сохранять и использовать разные варианты, помимо именования библиотек по-разному (ncursesw.so
, ncursest.so
и т. Д.), Скрипт конфигурации ncurses настраивает make-файл для помещения заголовочных файлов в подкаталоги по умолчанию. Это также позволяет иметь различные реализации curses наряду с ncurses, как указано в справочной странице .
Некоторые программы, тем не менее, все еще предполагают, что curses.h
, наряду со всеми другими заголовками ncurses, размещены на верхнем уровне, включают пути поиска и не будут искать подкаталоги. Во многих дистрибутивах Linux обычно есть какой-то обходной путь для проблемы в пакетах разработки ncurses, но если вы компилируете ncurses из исходного кода, есть два возможных подхода для решения проблемы:
- Использование
CPPFLAGS
или эквивалентного, как предполагает принятый ответ. Это работает, но вы должны каждый раз устанавливать соответствующие флаги компиляции.
- Настройка ncurses с помощью
--enable-overwrite
. Это установит заголовочные файлы ncurses в каталог include верхнего уровня, в соответствии с вашим --prefix
.
Если вы не планируете устанавливать библиотеку альтернативных проклятий, совершенно безопасно поместить заголовки ncurses в верхний уровень include path, и этот подход следует за Gentoo .