2013-01-20 54 views
1

它有點奇怪的故事。我正在嘗試構建openssl庫。那麼,這不是我第一次這樣做,直到現在還沒有問題。不過,我希望向TeamCity添加一個構建配置(實際上這個問題與TeamCity無關),可以按需構建我的第三方庫。所以,我創建與普通集OpenSSL的構建命令的步驟: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,更新1

實際的錯誤: NMAKE:致命錯誤U1077:「「C:\ Program Files文件(x86)的\微軟的Visual Studio 11.0 \ VC \ BIN \ AMD64 \ ml64。 EXE「':返回代碼'0x1' ml64.exe抱怨asm文件聲明它應該以」END「語句結尾。它確實,但... 任何想法?

+0

好吧,看起來它是一個(不)衆所周知的問題。 http://www.mentby.com/Group/openssl-users/cant-redirect-console-log-during-windows-build.html – kreuzerkrieg

回答

0

好,因爲這個問題是在Perl和寫入文件到標準輸出,然後重定向它,你必須改變下列文件建立64版:

  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

你必須打開這些文件和更改所有「開放標準輸出‘whateverfile’」喜歡的東西「打開我的$ asmfile‘whaeverfile’」,然後取注意字符串連接(僅在x86_64cpuid.pl中),然後將其打印到文件而不是STDOUT,類似於「print $ code」爲「打印$ asm $代碼」 ,當然不要忘記關閉文件,換句話說將「close STDOUT」改爲「close $ asmfile」

很明顯, x64的人將不得不改變另一組文件。

將嘗試與openssl維護人員溝通它。