如何使用最新的openssl编译curl

Jer*_*ain 7 c linux curl openssl

我下载了curl7.40源代码,我已经编译了openssl 1.0.2源代码,现在我想用openssl 1.0.2编译curl.

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

make && make install
Run Code Online (Sandbox Code Playgroud)

我安装后,我发现卷曲库但仍然与系统默认库链接. 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

但是当make install时,它会显示以下错误信息.

../lib/.libs/libcurl.so: undefined reference to `SSLv2_client_method'
collect2: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

Sor*_*ren 3

问题可能出在您构建 OpenSSL 库的方式上。

您可能在构建 openssl 时禁用了 SSLv2,因为某些发行版默认禁用 SSLv2。在编译 OpenSSL 时查看./config您的系统,并找到控制 OPENSSL_NO_SSL2 预处理器标志的选项。
为了在从源代码制作时使用正确版本的 openssl,您可以像这样制作 openssl:

cd <path-to-openssl-dir>
./config enable-ssl2 enable-ssl3 --prefix=<path-to-openssl-install-dir>
Run Code Online (Sandbox Code Playgroud)

然后,您可以通过以下方式将您的curl版本正确链接到openssl:

./configure --with-ssl=<path-to-openssl-install-dir>
Run Code Online (Sandbox Code Playgroud)