Подтвердить что ты не робот

OpenSSL: невозможно создать в VС++ 2010

Я загрузил последний исходный пакет OpenSSL. Я хочу создать его с помощью VС++ 2010 x64. Следуя инструкциям, похоже, не работает. Настроить шаг выглядит отлично, но затем:

C:\1 > мс \do_win64a.bat

C:\1 > perl util\mkfiles.pl 1 > MINFO

C:\1 > perl ms\uplink.pl win64a 1 > ms\uptable.asm

C:\1 > ml64 -c -Foms\uptable.obj ms\uptable.asm Макроассемблер Microsoft (R) (x64) Версия 10.00.30319.01 Авторское право (C) Корпорация Microsoft. Все права защищены.

Сборка: ms\uptable.asm

C:\1 > perl util\mk1mf.pl no-asm VC-WIN64A 1 > ms\nt.mak нет правила для crypto\md4 at util\mk1mf.pl строка 907.

C:\1 > perl util\mk1mf.pl dll no-asm VC-WIN64A 1 > ms\ntdll.mak нет правила для crypto\md4 at util\mk1mf.pl строка 907.

C:\1 > perl util\mkdef.pl 32 libeay 1 > ms\libeay32.def

C:\1 > perl util\mkdef.pl 32 ssleay 1 > ms\ssleay32.def

Вывод Win 32 (do_ms) выглядит несколько иначе, но "нет правила для криптограммы \md4 at util\mk1mf.pl строка 907" остается.

Может ли кто-нибудь помочь мне в создании библиотеки или обмениваться встроенными двоичными файлами vc2010?.. Или файл проекта VS2010 для библиотеки?

4b9b3361

Ответ 1

Проблема, похоже, связана с eol (конец строк). Решение заключается в исправлении файла mk1mf.pl, чтобы удалить возврат каретки:

Index: mk1mf.pl
===================================================================
--- mk1mf.pl    (revision 88908)
+++ mk1mf.pl    (working copy)
@@ -315,7 +315,7 @@
 for (;;)
        {
        chop;

+       s/\r$//; #remove carriage return too!
        ($key,$val)=/^([^=]+)=(.*)/;
        if ($key eq "RELATIVE_DIRECTORY")
                {

Найден решение в рассылке пользователей openssl:

http://groups.google.com/group/mailing.openssl.users/browse_thread/thread/42a8f226f1fc279f)

Ответ 2

Патч, приведенный выше, работает, но лучшим решением является использование ActivePerl, как рекомендовано в документации OpenSSL.

http://www.activestate.com/activeperl/downloads

Другие сборки perl, такие как сборка MSYS, дадут вам эту ошибку.

Чтобы выяснить, используете ли вы ActivePerl, запустите perl.exe -version в командной строке. Он должен сказать что-то вроде:

Binary build 1601 [296175] provided by ActiveState http://www.ActiveState.com

Ответ 3

Похоже, вы используете MSYS perl, который следует за окончанием строк в стиле unix. Вы должны использовать источники, извлеченные из .tar.gz средствами MSYS:

  $ tar zxvf openssl-1.0.2d.tar.gz

или checkout из git с настройкой "autocrlf false", установленной перед проверкой:

  > git config --global core.autocrlf false
  > git clone https://github.com/openssl/openssl