Как вы компилируете OpenSSL для x64? - PullRequest
15 голосов
/ 01 октября 2008

После выполнения инструкций в INSTALL.W64 у меня есть две проблемы:

  • Код все еще записывается в папку «out32». Мне нужно иметь возможность ссылаться на 32-битные и 64-битные версии библиотеки на моей рабочей станции, поэтому я не хочу, чтобы 64-битные версии блокировали 32-битные библиотеки.
  • Выход по-прежнему 32-разрядный! Это означает, что я получаю ошибки «неразрешенный внешний символ» при попытке установить связь с библиотеками из приложения x64.

Ответы [ 8 ]

22 голосов
/ 01 октября 2008

Чтобы скомпилировать статические библиотеки (как релизные, так и отладочные), вот что вам нужно сделать:

  1. Установить Perl - www.activestate.com
  2. Запустите «Командная строка Visual Studio 2008 x64 Cross Tools» (Примечание. Обычная командная строка НЕ ​​РАБОТАЕТ.)
  3. Сконфигурировать с perl Настройка VC-WIN64A без общего доступа без понятия
  4. Выполнить: ms \ do_win64a
  5. РЕДАКТИРОВАТЬ ms \ nt.mak и изменить «32» на «64» в выходных каталогах:
    # The output directory for everything intersting
    OUT_D=out64.dbg
    # The output directory for all the temporary muck
    TMP_D=tmp64.dbg
    # The output directory for the header files
    INC_D=inc64
    INCO_D=inc64\openssl
  1. ПРАВИТЬ ms \ nt.mak и удалить bufferoverflowu.lib из EX_LIBS, если вы получили сообщение об ошибке.
  2. Выполнить: nmake -f ms \ nt.mak
  3. РЕДАКТИРОВАТЬ файл ms \ do_win64a и ДОБАВИТЬ "debug" во все строки, кроме "ml64" и двух последних строк
  4. Выполнить: ms \ do_win64a
  5. Повторите шаги 4 и 5
  6. РЕДАКТИРОВАТЬ файл ms \ nt.mak и ДОБАВИТЬ / Zi в список CFLAG!
  7. Выполнить: nmake -f ms \ nt.mak
3 голосов
/ 02 июня 2017

Использование Конан . Он очень прост в установке и использовании.

Вы можете запросить файлы, готовые к использованию. Например для Linux x64 или использования с Visual Studio 2012. Вот пример инструкции:

conan install OpenSSL/1.0.2g@lasote/stable -s arch="x86_64" -s build_type="Debug" -s compiler="gcc" -s compiler.version="5.3" -s os="Linux" -o 386="False" -o no_asm="False" -o no_rsa="False" -o no_cast="False" -o no_hmac="False" -o no_sse2="False" -o no_zlib="False" ...

3 голосов
/ 21 ноября 2012

Я решил проблему таким образом, используя источник 1.0.1c:

Добавьте этот блок к util/pl/VC-32.pl непосредственно перед строкой $o='\\';.

if ($debug)
    {
    $ssl .= 'd';
    $crypto .= 'd';
    }

Добавьте этот блок к util/pl/VC-32.pl непосредственно перед строкой if ($debug).

if ($FLAVOR =~ /WIN64/)
    {
    $out_def =~ s/32/64/;
    $tmp_def =~ s/32/64/;
    $inc_def =~ s/32/64/;
    }

Затем постройте все разновидности:

setenv /x86 /release
perl Configure VC-WIN32  --prefix=build -DUNICODE -D_UNICODE
ms\do_ms
nmake -f ms\ntdll.mak

setenv /x64 /release
perl Configure VC-WIN64A --prefix=build
ms\do_win64a.bat
nmake -f ms\ntdll.mak

setenv /x86 /debug
perl Configure debug-VC-WIN32  --prefix=build -DUNICODE -D_UNICODE
ms\do_ms
move /y ms\libeay32.def ms\libeay32d.def
move /y ms\ssleay32.def ms\ssleay32d.def
nmake -f ms\ntdll.mak

setenv /x64 /debug
perl Configure debug-VC-WIN64A --prefix=build
ms\do_win64a.bat
move /y ms\libeay32.def ms\libeay32d.def
move /y ms\ssleay32.def ms\ssleay32d.def
nmake -f ms\ntdll.mak
2 голосов
/ 30 июля 2016

Согласно официальной документации:

"Вы можете быть удивлены: 64-битные артефакты действительно выводятся в подкаталогах out32 * и имеют имена, заканчивающиеся * 32.dll. Фактически 64-битная цель компиляции пока является постепенным изменением по сравнению с устаревшей 32-битной Windows . Многочисленные флаги компиляции все еще помечены как «32», хотя они применимы как к 32, так и к 64-битным целям. "

Так что первый ответ больше не нужен.

Инструкции можно найти здесь:

https://wiki.openssl.org/index.php/Compilation_and_Installation#W64

1 голос
/ 07 марта 2011

Если вы строите в cygwin, вы можете использовать следующий скрипт, предположив, что MSDEVPATH уже настроен на ваш каталог Visual Studio

 echo "Building x64 OpenSSL"
 # save the path of the x86 msdev
 MSDEVPATH_x86=$MSDEVPATH
 # and set a new var with x64 one
 MSDEVPATH_x64=`cygpath -u $MSDEVPATH/bin/x86_amd64`

 # now set vars with the several lib path for x64 in windows mode
 LIBPATH_AMD64=`cygpath -w $MSDEVPATH_x86/lib/amd64`
 LIBPATH_PLATFORM_x64=`cygpath -w $MSDEVPATH_x86/PlatformSDK/lib/x64`
 # and set the LIB env var that link looks at
 export LIB="$LIBPATH_AMD64;$LIBPATH_PLATFORM_x64"

 # the new path for nmake to look for cl, x64 at the start to override any other msdev that was set previously
 export PATH=$MSDEVPATH_x64:$PATH

 ./Configure VC-WIN64A zlib-dynamic --prefix=$OUT --with-zlib-include=zlib-$ZLIB_VERSION/include --with-zlib-lib=zlib-$ZLIB_VERSION/x64_lib

 # do the deed
 ms/do_win64a.bat
 $MSDEVPATH_x86/bin/nmake -f ms/ntdll.mak  ${1:-install}
0 голосов
/ 03 декабря 2018

На момент написания этой инструкции последняя версия OpenSSL - 1.1.1a.

Окружающая среда:

  • Windows 10
  • MS Visual Studio 2017

Требования:

  • Установка ActivePerl - выпуск для сообщества в порядке
  • Установка NASM

Убедитесь, что и Perl, и NASM находятся в переменной среды PATH.

Компиляция x64:

  1. Открыть командную строку x64 Native Tools
  2. perl Настройка VC-WIN64A --prefix = e: \ projects \ bin \ OpenSSL \ vc-win64a --openssldir = e: \ projects \ bin \ OpenSSL \ SSL
  3. NMAKE
  4. Испытание Nmake
  5. nmake install

Шаг 4 необязательный.

Компиляция x86:

  1. Открыть командную строку для собственных инструментов x86
  2. perl Настройка VC-WIN32 --prefix = e: \ projects \ bin \ OpenSSL \ vc-win32 --openssldir = e: \ projects \ bin \ OpenSSL \ SSL
  3. NMAKE
  4. Тест Nmake
  5. nmake install

Шаг 4 является необязательным.

0 голосов
/ 12 октября 2018

Инструкции по сборке изменились с тех пор, как этот вопрос был задан изначально. Новые инструкции можно найти здесь . Обратите внимание, что вам нужно будет установить Perl и NASM, а также использовать командную строку разработчика.

0 голосов
/ 18 апреля 2010

Вы также можете использовать MSYS + mingw-w64 :

1) скачать и распаковать msys в C: \ msys
2) скачать и распаковать mingw-w64 в c: \ mingw64
3) запустить сценарий msys postinstall. Когда он запрашивает вашу установку MINGW, укажите его C: \ mingw64 \ bin
4) Извлечение ежедневного снимка openssl (в версии 1.0.0 есть ошибка). В исходном каталоге настроить mingw64
сделать
сделать проверку
сделать установку
5) openssl установлен в / local /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...