2016-10-06 93 views
1

При реализации кода для SSL рукопожатия с использованием Asio, проект не строит и бросает ошибкуAsio зависимость от OpenSSL

C:\Eclipse\Boost\boost_1_62_0/boost/asio/ssl/detail/openssl_types.hpp:19:26: fatal error: openssl/conf.h: No such file or directory

Так это значит, что для SSL с использованием Asio нам нужно установить OpenSSL?

Ну, это не тот вопрос, который я хотел поднять. Вопрос в том, есть ли другой альтернативный вариант использования Asio SSL без запроса клиента на установку OpenSSL или другими словами, как я могу статически связывать OpenSSL с моим приложением в одном исполняемом файле?

+0

Да, вы должны установить OpenSSL для повышения. Вы хотите, чтобы вы использовали OpenSSL + Boost без его установки (OpenSSL)? – Blacktempel

+0

Вам необходимо предоставить дополнительную информацию, например, о том, как вы настроили и создали Boost, и как вы строите свою программу. Также см. [Boost Asio и OpenSSL 1.1.0] (http://stackoverflow.com/q/37517730), [VS2015 build openssl с boost asio] (http: // stackoverflow.com/q/39032716) и [Проблема 12238: Boost не скомпилируется с использованием OpenSSL 1.1.0] (https://svn.boost.org/trac/boost/ticket/12238). – jww

+0

Правильно, я хочу сделать исполняемый файл, который позволяет клиенту общаться без какой-либо необходимости устанавливать OpenSSL на стороне клиента @Blacktempel –

ответ

1

can I statically bind OpenSSL with my application in a single executable?

Да. Вы можете построить OpenSSL с опцией no-shared, и он будет только построить статическую библиотеку:

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

, а затем просто поставить статический архив на командной строке ссылки, и он будет статический связан - но люди вы распространяете это не так.

Однако для связи программы вы должны иметь файлы заголовков и статическую библиотеку, доступные вашему компилятору/компоновщику.

1

boost::asio использует OpenSSL для SSL розеток: если у вас есть:

#include <boost/asio/ssl.hpp> 

в вашем коде, то вам нужно строить с OpenSSL, а также boost.

Чтобы построить с OpenSSL:

  • определить макрос BOOST_NETWORK_ENABLE_HTTPS на уровне проекта;
  • Добавить OpenSSL включить каталог в ваш путь включения;
  • добавить каталог библиотеки OpenSSL в путь к вашей библиотеке, например. -L$${OPENSSL_ROOT}/lib;
  • добавить соответствующие криптографические библиотеки для вашего компилятора, например:

Windows, Visual Studio:

LIBS += -llibeay32 
LIBS += -llibssleay32 

Окна, MinGW:

LIBS += -lssl 
LIBS += -lcrypto 

Linux, GCC:

LIBS += -lssl 
LIBS += -lcrypto 
LIBS += -ldl 

Примечание: у вас могут возникнуть проблемы с библиотекой. Я рекомендую включать библиотеки OpenSSL после библиотек boost; BTW boost::asiolibboost_system.

+0

для windows также ссылается на crypt32.lib –

Смежные вопросы