Вопрос

Я пытаюсь собрать Python 2.6.2 из исходного кода в моей системе Linux.У него есть ncurses, установленные в /usr/ local /, и curses.h находится в / usr /local /include/ncurses.Таким образом, curses.h не найден во включаемом пути, и эти пакеты завершаются ошибкой при сборке Python.

Каково правильное решение этой проблемы?Предполагается ли, что Python включает <ncurses curses.h="">?Должен ли /usr/local/include/ncurses находиться во включаемом пути?Должна ли быть ссылка из файлов в каталоге ncurses на /usr/local/include?

Или есть какое-то более простое решение?

Это было полезно?

Решение

С помощью многих пакетов с открытым исходным кодом вы можете установить:

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

или даже:

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

перед запуском скрипта настройки.Я не компилировал Python достаточно недавно, чтобы быть уверенным, что это работает, но, вероятно, это так - у меня установлены ncurses в / usr / gnu (потому что / usr/ local / автоматически монтируется и содержит antiques), и я не помню, чтобы приходилось использовать что-то особенное, чтобы заставить его работать.


Перепроверил...

Сценарий настройки включает в себя только <curses.h>.Я должен был использовать:

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

Чтобы настроить Python (2.5) на прием проклятий.Ты бы заменил 'gnu" с "local" для вашей конфигурации.

Другие советы

Я знаю, что это очень старый вопрос, но проблема все еще возникала у меня при компиляции python 3.6.0 из исходного кода, так что, я думаю, она все еще актуальна.

Последние версии ncurses выпускаются в нескольких вариантах:обычная, широкая поддержка символов, с резьбой.Чтобы позволить программистам сохранять и использовать разные варианты, помимо того, что библиотеки называются по-разному (ncursesw.so, ncursest.so, и т.д.), скрипт ncurses configure настраивает makefile для размещения файлов заголовков в подкаталогах по умолчанию.Это также позволяет иметь различные реализации curses наряду с ncurses, как указано в справочная страница.

Однако некоторые программы все еще предполагают, что curses.h, наряду со всеми другими заголовками ncurses, размещаются на верхнем уровне, включают пути поиска и не будут заглядывать в подкаталоги.Во многих дистрибутивах Linux обычно существует какой-то обходной путь для решения проблемы в пакетах разработки ncurses, но если вы компилируете ncurses из исходного кода, есть два возможных подхода к решению проблемы:

  1. Используя CPPFLAGS или эквивалент, как следует из принятого ответа.Это работает, но вы должны каждый раз устанавливать соответствующие флаги компиляции.
  2. Настройка ncurses с помощью --enable-overwrite.Это приведет к установке заголовочных файлов ncurses в каталог include верхнего уровня в соответствии с вашим --prefix.

Если вы не планируете устанавливать альтернативную библиотеку curses, совершенно безопасно поместить заголовки ncurses в путь включения верхнего уровня, и это подход, которому следует Генту.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top