Ошибка компиляции Python 2.7.3 на CentOS5

Я пытаюсь установить Python 2.7.3 на мою машину CentOS 5.50. Скачать, распаковать, настроить (с --prefix=/usr/local) в порядке. Это make который выдает эту ошибку:

gcc -pthread -c -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes  -I. -IInclude -I./Include   -DPy_BUILD_CORE \
      -DSVNVERSION="\"`LC_ALL=C svnversion .`\"" \
      -DHGVERSION="\"`LC_ALL=C `\"" \
      -DHGTAG="\"`LC_ALL=C `\"" \
      -DHGBRANCH="\"`LC_ALL=C `\"" \
      -o Modules/getbuildinfo.o ./Modules/getbuildinfo.c
gcc.orig: directory": No such file or directory
./Modules/getbuildinfo.c: In function '_Py_svnversion':
./Modules/getbuildinfo.c:63: error: missing terminating " character
./Modules/getbuildinfo.c:63: error: expected expression before ';' token
make-3.79.1-p7: *** [Modules/getbuildinfo.o] Error 1

В течение нескольких дней я рыскал в сети, пытаясь решить эту проблему самостоятельно, но я оказался пустым. Одно предложение, с которым я столкнулся, касалось установки "Инструментов разработчика" в системе, которые, я считаю, установлены правильно, но я не уверен на 100%.

Если у кого-то есть информация по этому вопросу, я был бы признателен за помощь.

Благодарю.

ОБНОВИТЬ:

Я скомпилировал и установил Python 3.3 без проблем. Проблема определенно связана с SVN. Несмотря на то, что пакеты, которые я использую, поддерживаются в Python 3.3, я все же хотел бы получить там 2.7.3, так что я все еще ищу помощь.

2 ответа

Вам следует cd в каталог модулей и посмотрите на вывод

svnversion .

в моей системе, с моей версией SVN (1.6.17) это просто говорит exported на стандартный вывод Этот вывод устанавливает SVNVERSION, как если бы он был с #define в C код и фактически используется для определения массива символов. Если там есть мусор, это вызовет ошибку.

static const char svnversion[] = SVNVERSION;

Я предлагаю вам просто временно переименовать команду svnversion во время компиляции. Или, если это не сработает, отредактируйте функцию _PY_svnversion в Modules/getbuildinfo.c чтобы:

const char *
_Py_svnversion(void)
{                         
    return "Unversioned directory";
}

Было бы интересно посмотреть, что на самом деле возвращает svnversion в вашей системе.

Я переименовал svnversion (как было предложено) после того, как нашел его с помощью 'which svnversion', а затем снова запустил 'make' на Python3.0, и это сработало.

Другие вопросы по тегам