编译curl make 死活不通过,唉
执行参数如下,谢谢各位帮忙看看
这一步一切正常
root@debian:~/curl-7.45.0# ./configure --with-ssl
make
一顿编译之后 ...... 然后出错了
../lib/.libs/libcurl.so: undefined reference to `SSLv2_client_method'
../lib/.libs/libcurl.so: undefined reference to `SSL_CTX_set_alpn_protos'
../lib/.libs/libcurl.so: undefined reference to `SSL_get0_alpn_selected'
collect2: error: ld returned 1 exit status
make[2]: *** [curl] Error 1
make[2]: Leaving directory `/root/curl-7.45.0/src'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/root/curl-7.45.0/src'
make: *** [all-recursive] Error 1
openssl 也是编译的,参数如下
./config shared zlib
已经编译成功
root@debian:~/curl-7.45.0# openssl version
OpenSSL 1.0.2d 9 Jul 2015
root@debian:~/curl-7.45.0#
你的系统可能已经自带了OpenSSL,恰好这个版本禁用了SSL2,所以会出现
(可以参考 http://stackoverflow.com/questions/8287515/problems-building-libcurl-7-21-2-on-ubuntu-11-10-hiphop)
解决这个问题很简单,两种方法:
1.找一个支持SSL2的OpenSSL版本(比如OpenSSL 1.0.2),用下面的命令重新生成Makefile文件
2.禁用SSL2
(可以参考 http://stackoverflow.com/questions/9856812/apache-2-4-1-undefined-reference-to-sslv2-client-method)
至于另外两个错误,依然是你的系统中已有OpenSSL造成的。解决问题也简单,假设你把OpenSSL装在了/usr/local/ssl,用下面的命令为curl生成正确的Makefile:
未来写代码需要用到libcurl的时候,也必须让编译器找到你自己编译安装的OpenSSL在哪:
(可以参考 https://github.com/tatsuhiro-t/nghttp2/issues/336)