linux 编译 curl 出错

编译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#
阅读 12k
评论 2015-11-12 提问
    2 个回答

    你的系统可能已经自带了OpenSSL,恰好这个版本禁用了SSL2,所以会出现

    ../lib/.libs/libcurl.so: undefined reference to `SSLv2_client_method'

    (可以参考 http://stackoverflow.com/questions/8287515/problems-building-libcurl-7-21-2-on-ubuntu-11-10-hiphop

    解决这个问题很简单,两种方法:

    1.找一个支持SSL2的OpenSSL版本(比如OpenSSL 1.0.2),用下面的命令重新生成Makefile文件

    ./config shared

    2.禁用SSL2

    ./config shared no-ssl2

    (可以参考 http://stackoverflow.com/questions/9856812/apache-2-4-1-undefined-reference-to-sslv2-client-method

    至于另外两个错误,依然是你的系统中已有OpenSSL造成的。解决问题也简单,假设你把OpenSSL装在了/usr/local/ssl,用下面的命令为curl生成正确的Makefile:

    ./configure --with-ssl=/usr/local/ssl

    未来写代码需要用到libcurl的时候,也必须让编译器找到你自己编译安装的OpenSSL在哪:

    export LD_LIBRARY_PATH = /usr/local/ssl/lib

    (可以参考 https://github.com/tatsuhiro-t/nghttp2/issues/336

    评论 赞赏 2015-12-22

      编译时候需要指定openssl源码的路径

      评论 赞赏 2015-12-18
        撰写回答

        登录后参与交流、获取后续更新提醒