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:
- крипто \ АЕС \ ASM \ aes-x86_64.pl
- крипто \ млрд \ ASM \modexp512-x86_64.pl
- крипто \ млрд \ ASM \x86_64-gf2m.pl
- крипто \ млрд \ ASM \ x86_64-mont.pl
- крипто \ млрд \ ASM \x86_64-mont5.pl
- крипто \md5\ ASM \md5-x86_64.pl
- крипто \ Режимы \ ASM \ ghash-x86_64.pl
- крипто \ rc4 \ ASM \rc4-md5-x86_64.pl
- крипто \ rc4 \ ASM \ rc4-x86_64.pl
- крипто \ ша \ ASM \sha1-x86_64.pl
- крипто \ ша \ ASM \sha512-x86_64.pl
- крипто \whrlpool\ ASM \wp-x86_64.pl
- крипто \x86_64cpuid.pl
- двигатели \ 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.