OpenSSL: невозможно встроить в VC ++ 2010 - PullRequest
11 голосов
/ 07 октября 2011

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

C: \ 1> ms \ 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) Macro Assembler(x64) Версия 10.00.30319.01 Copyright (C) Microsoft Corporation.Все права защищены.

Сборка: 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 в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) выглядит немного по-другому, но "нет правила для crypto \ md4 в util \ mk1mf.pl line 907".

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

Ответы [ 4 ]

29 голосов
/ 11 октября 2011

Проблема, похоже, связана с 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)

7 голосов
/ 11 октября 2012

Патч, предоставленный выше, работает, но лучшим решением является использование 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
2 голосов
/ 17 ноября 2015

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

  $ tar zxvf openssl-1.0.2d.tar.gz

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

  > git config --global core.autocrlf false
  > git clone https://github.com/openssl/openssl
1 голос
/ 24 октября 2013

В этой статье рассмотрены некоторые странности построения OpenSSL с помощью Visual Studio:

http://developer.covenanteyes.com/building-openssl-for-visual-studio/

...