OpenSSL构建奇怪的行为

时间:2013-01-20 20:08:10

标签: build console openssl console-redirect

这有点奇怪。我正在尝试构建openssl库。好吧,这不是我第一次这样做,直到现在它还不错。但是,我已经决定向TeamCity添加一个构建配置(实际上这个问题与TeamCity无关),以便按需构建我的所有第三方库。因此,我使用一组常见的openssl构建命令创建了一个步骤:

perl配置VC-WIN64A

MS \ do_win64a.bat

nmake / d / f ms \ ntdll.mak

...并且在组装第一个asm文件时构建失败。所以我在VS2012 x64命令提示符下运行相同的命令,并且正如预期的那样构建成功。我花了一段时间直到我发现问题出在输出重定向上。 Teamcity将构建步骤的输出重定向到teamcity构建日志,因此我将“> 1.txt”添加到“nmake / d / f ms \ ntdll.mak”命令,并且构建失败。我会说这是构建失败的一些意外原因。 到目前为止,我已经尝试过:

  • 使用重定向从VS2010命令提示符构建相同的内容, 失败。
  • 从VS2010命令提示符构建相同的内容 重定向,成功。
  • 从VS2010 / VS2012命令构建相同的内容 提示重定向到文件并强制重定向到CON(nmake / d / f ms \ ntdll.mak> CON> 1.txt)失败。
  • 谷歌搜索“nmake问题 当控制台输出重定向时“ - 没有
  • 谷歌搜索“openssl 控制台输出重定向时构建问题“ - 没有

我的设置   - Win2008R2,虚拟机。   - VS2010,最新更新   - VS2012,Update 1

实际错误: NMAKE:致命错误U1077:'“C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ VC \ BIN \ amd64 \ ml64.EXE”':返回代码'0x1' ml64.exe抱怨asm文件说它应该以“END”语句结束。确实如此,但...... 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

好的,因为问题出在perl并将文件写入stdout然后重定向它,你必须更改以下文件来构建x64版本:

  1. 加密\ AES \ ASM \ aes-x86_64.pl
  2. 加密\ BN \ ASM \ modexp512-x86_64.pl
  3. 加密\ BN \ ASM \ x86_64-gf2m.pl
  4. 加密\ BN \ ASM \ x86_64-mont.pl
  5. 加密\ BN \ ASM \ x86_64-mont5.pl
  6. 加密\ MD5 \ ASM \ md5-x86_64.pl
  7. 加密\模式\ ASM \ ghash-x86_64.pl
  8. 加密\ RC4 \ ASM \ rc4-md5-x86_64.pl
  9. 加密\ RC4 \ ASM \ rc4-x86_64.pl
  10. 加密\ SHA \ ASM \ sha1-x86_64.pl
  11. 加密\ SHA \ ASM \ sha512-x86_64.pl
  12. 加密\ whrlpool \ ASM \ wp-x86_64.pl
  13. 加密\ x86_64cpuid.pl
  14. 引擎\ ASM \ e_padlock-x86_64.pl
  15. 你必须打开这些文件并将所有“打开STDOUT”无论文件“”更改为“打开我的$ asmfile”whaeverfile“”,然后处理字符串连接(仅在x86_64cpuid.pl中),然后将其打印到该文件而不是STDOUT,类似于“print $ code”到“print $ asm $ code” 当然,不要忘记关闭文件,换句话说将“关闭STDOUT”更改为“关闭$ asmfile”

    显然,当构建x64以外的目标时,必须更改另一组文件。

    将尝试将其传达给openssl维护者。