我正在尝试在我的 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 数组。如果其中有垃圾,则会引发错误。#define
C
static const char svnversion[] = SVNVERSION;
我建议你在编译时临时重命名 svnversion 命令。或者如果这不起作用,请将函数编辑_PY_svnversion
为Modules/getbuildinfo.c
:
const char *
_Py_svnversion(void)
{
return "Unversioned directory";
}
看看 svnversion 实际上给你的系统带来什么回报将会很有趣。
答案2
我使用“which svnversion”找到 svnversion 后将其重命名(按照建议),然后在 Python3.0 上再次运行“make”,并且成功了。