-mno-cygwin:gcc构建Mercurial(Windows 2000)

由于Mercurial安装程序无法在旧的Windows 2000系统上运行,因此我尝试从源代码构建它。 它抱怨C编译器不识别选项-mno-cygwin 。 我的gcc版本是4.6.1。 而MinGw只有两个月大了。

遵循以下步骤: https : //www.mercurial-scm.org/wiki/BuildingOnWindows

F:\mercurial-2.0.2>python setup.py build running build running build_mo warning: hgbuildmo: could not find msgfmt executable, no translations will be built running build_py package init file 'mercurial\__init__.py' not found (or not a regular file) package init file 'mercurial\__init__.py' not found (or not a regular file) running build_ext building 'mercurial.base85' extension f:\mingw\bin\gcc.exe -mno-cygwin -mdll -O -Wall -If:\python27\include -If:\python27\PC -c mercurial/base85.c -o build\temp.win32-2.7\Release\mercurial\base85.o **cc1.exe: error: unrecognized command line option '-mno-cygwin'** error: command 'gcc' failed with exit status 1 

来自TDM-GCC MinGW发行版开发人员的评论 :

从4.6系列开始,GCC不再接受许多无法识别的选项或标志。 TDM-GCC从未“支持”-mno-cygwin; 现在,它会抱怨它。 对于诸如“-no-undefined”之类的libtool标志也是如此。

因此,您可能必须使用稍微较旧的GCC版本,它将忽略无意义的选项,或者修复构建脚本,以便它们不使用该标志(无论如何,MinGW编译器都不需要)。

作为后续注释,看起来Cygwin编译器从GCC 4开始停止支持-mno-cygwin : http : //www.cygwin.com/ml/cygwin/2009-03/msg00802.html

所以这个选项在几年内或多或少都没用。

在运行“python setup.py build”之前,你不要忘记这一步吗?

如果使用mingw,则需要创建一个setup.cfg,指示setuptools使用它:

 cd mercurial echo [build] > setup.cfg echo compiler=mingw32 >> setup.cfg