Как скомпилировать скручивание с помощью последних openssl

Я загружаю исходный код curl7.40, и я уже скомпилировал исходный код openssl 1.0.2. Теперь я хочу скомпилировать curl с openssl 1.0.2.

./configure --prefix=/usr/local/curl-7.40.0 --with-ssl 
--with-libssl-prefix=/usr/local/openssl-1.0.2

make && make install

После установки я ldd скручиваю библиотеку, но все же связываюсь с библиотекой по умолчанию системы. ldd libcurl.so linux-vdso.so.1 => (0x00007fff2db2e000) libidn.so.11 => /usr/lib/x86_64-linux-gnu/libidn.so.11 (0x00007fafb9b6e000) librtmp.so.0 => /usr/lib/x86_64-linux-gnu/librtmp.so.0 (0x00007fafb9954000) libssl.so.1.0.0 => /lib/x86_64-linux-gnu/libssl.so.1.0.0 (0x00007fafb96f5000) libcrypto.so.1.0.0 => /lib/x86_64-linux-gnu/libcrypto.so.1.0.0 (0x00007fafb931b000) ...

ОБНОВЛЕНИЕ
После некоторого поиска я использую команду ниже для конфигурации.

./configure --prefix=/usr/local/curl-7.40.0 --with-ssl=/usr/local/openssl-1.0.2

Но когда вы установите install, он отобразит ниже информацию об ошибке.

../lib/.libs/libcurl.so: undefined reference to `SSLv2_client_method'
collect2: error: ld returned 1 exit status

c,linux,curl,openssl,

7

Ответов: 2


1

Вероятно, проблема связана с тем, как вы создали библиотеку OpenSSL.

Вероятно, вы создали openssl с отключенным SSLv2, поскольку некоторые дистрибутивы по умолчанию отключили SSLv2. Посмотрите на ./configсвою систему, когда вы компилируете OpenSSL, и найдите опцию, которая управляет флагом препроцессора OPENSSL_NO_SSL2.
Чтобы использовать правильную версию openssl при создании из исходного кода, вы можете сделать openssl следующим образом:

cd <path-to-openssl-dir>
./config enable-ssl2 enable-ssl3 --prefix=<path-to-openssl-install-dir>

Затем вы можете правильно связать свою версию curl с openssl:

./configure --with-ssl=<path-to-openssl-install-dir>

0

SSLv2_client_method()используется в lib / vtls / # include, строка 1575 с проверкой доступности этой функции с помощью autoconf . Мне кажется, что AC_CHECK_FUNCS autoconf неправильно обнаруживает вашу системную установку openssl, которая имеет SSLv2, перед тем, SSLv2_client_method()как приступить к вашей собственной установке openssl-1.0.2, которая не имеет CFLAGS=-I/usr/local/openssl-1.0.2/includeи, следовательно, предполагает, что функция будет доступна.

Попытайтесь пройти "CFLAGS=-I/usr/local/openssl-1.0.2/include -DOPENSSL_NO_SSL2"или даже в ./configureкачестве аргумента, чтобы openssl.cзаставить openssl.cобойтись без SSLv2_client_method()ошибочно предполагаемого наличия.

с, Linux, локон, OpenSSL,
Похожие вопросы