无法在 Ubuntu 上为 Windows 编译 Putty

无法在 Ubuntu 上为 Windows 编译 Putty

我正在尝试在 ubuntu 14.04 上为 windows 编译 putty。从这里获取源代码:

http://the.earth.li/~sgtatham/putty/latest/putty-0.63.tar.gz

这是我在出现错误之前所做的:

[17:45:20][~/putty-0.63]$ perl mkfiles.pl 

[17:46:42][~/putty-0.63]$ cd windows/

[17:46:44][~/putty-0.63/windows]$ make VER="-DSNAPSHOT=$(date '+%Y-%m-%d') -DSVN_REV='$(svnversion)' -DMODIFIED" TOOLPATH=i586-mingw32msvc- -f Makefile.cyg putty.exe
.
.
.

i586-mingw32msvc-windres   --define WIN32=1 --define _WIN32=1 --define WINVER=0x0400 --define SNAPSHOT=2015-02-18 --define SVN_REV='Unversioned directory' --define MODIFIED ../windows/putty.rc -o putty.res.o

i586-mingw32msvc-gcc   -mno-cygwin -Wall -O2 -D_WINDOWS -DDEBUG -DWIN32S_COMPAT -D_NO_OLDNAMES -DNO_MULTIMON -DNO_HTMLHELP -DNO_SECUREZEROMEMORY -I.././ -I../charset/ -I../windows/ -I../unix/ -I../macosx/ -DSECURITY_WIN32 -D_WIN32_IE=0x0500 -DWINVER=0x0500 -D_WIN32_WINDOWS=0x0410 -D_WIN32_WINNT=0x0500 -DSNAPSHOT=2015-02-18 -DSVN_REV='Unversioned directory' -DMODIFIED -c ../version.c

../version.c:63: warning: division by zero

../version.c:63: error: enumerator value for גvorpal_swordג is not an integer constant
make: *** [version.o] Error 1

我能做些什么呢?

答案1

SNAPSHOT和的值SVN_REV用于组成sshver类似的值:

sshver = "PuTTY-Snapshot-SNAPSHOT:rSVN_REV"

SNAPSHOT=2015-02-18
SVN_REV=Unversioned directory

这使得

sshver = "PuTTY-Snapshot-2015-02-18:rUnversioned directory"

什么违反了最后一行的断言:version.c长度sshver最多为 40 个字符。

/*
 * SSH local version string MUST be under 40 characters. Here's a
 * compile time assertion to verify this.
 */
enum { vorpal_sword = 1 / (sizeof(sshver) <= 40) };

他们显然没有针对“未版本化目录”场景测试其构建。

不确定“未版本化目录”来自哪里(它不在源代码中)。

解决方案:

相关内容