OpenSSL построить странное поведение

Это своего рода странная история. Я пытаюсь собрать библиотеку openssl. Ну, это не первый раз, когда я делаю это, и до сих пор это было хорошо. однако я решил добавить конфигурацию сборки в TeamCity (на самом деле проблема не имеет ничего общего с TeamCity) для сборки всех моих сторонних библиотек по требованию. Итак, я создал шаг с общим набором команд сборки openssl:

Perl Настройка VC-WIN64A

мс \ 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) не удалась.
  • Поиск в Google "проблем с nmake при перенаправлении вывода на консоль" - ничего
  • Поиск в Google для "проблем сборки openssl при перенаправлении вывода на консоль" - ничего

Моя настройка - Win2008R2, виртуальная машина. - VS2010, последние обновления - VS2012, обновление 1

Фактическая ошибка: NMAKE: фатальная ошибка U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\BIN\amd64\ml64.EXE" ": код возврата'0x1' ml64.exe жалуется на файл asm указание должно заканчиваться на "END". Да, но... Есть идеи?

1 ответ

Хорошо, поскольку проблема в perl и записи файлов в stdout, а затем перенаправлении его, вы должны изменить следующие файлы для сборки версии x64:

  1. крипто \ АЕС \ ASM \ aes-x86_64.pl
  2. крипто \ млрд \ ASM \modexp512-x86_64.pl
  3. крипто \ млрд \ ASM \x86_64-gf2m.pl
  4. крипто \ млрд \ ASM \ x86_64-mont.pl
  5. крипто \ млрд \ 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. крипто \ ша \ ASM \sha1-x86_64.pl
  11. крипто \ ша \ ASM \sha512-x86_64.pl
  12. крипто \whrlpool\ ASM \wp-x86_64.pl
  13. крипто \x86_64cpuid.pl
  14. двигатели \ ASM \e_padlock-x86_64.pl

Вы должны открыть эти файлы и изменить все "open STDOUT "whatfile "на что-то вроде"open my $asmfile "whaeverfile"", затем позаботиться о конкатенации строк (только в x86_64cpuid.pl) и затем распечатать его в файл вместо STDOUT, что-то вроде "print $code" для "print $asm $code" и, конечно, не забудьте закрыть файл, другими словами, измените "close STDOUT" на "close $asmfile"

Очевидно, что при создании цели, отличной от x64, нужно будет изменить другой набор файлов.

Постараюсь сообщить об этом сопровождающему openssl.

Другие вопросы по тегам