在 CentOS5 上编译 Python 2.7.3 时出错

在 CentOS5 上编译 Python 2.7.3 时出错

我正在尝试在我的 CentOS 5.50 机器上安装 Python 2.7.3。下载、提取、配置(使用--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,所以我仍在寻求帮助。

答案1

您应该cd进入 Modules 目录并查看输出

svnversion .

在我的系统上,使用我的 svn 版本 (1.6.17),它只会输出到 stdout。此输出设置 SVNVERSION,就好像它在代码中exported一样,并且实际上用于定义一个 char 数组。如果其中有垃圾,则会引发错误。#defineC

static const char svnversion[] = SVNVERSION;

我建议你在编译时临时重命名 svnversion 命令。或者如果这不起作用,请将函数编辑_PY_svnversionModules/getbuildinfo.c

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

看看 svnversion 实际上给你的系统带来什么回报将会很有趣。

答案2

我使用“which svnversion”找到 svnversion 后将其重命名(按照建议),然后在 Python3.0 上再次运行“make”,并且成功了。

相关内容