linux运维 - linux 编译 curl 出错
迷茫
迷茫 2017-04-17 13:51:36
[Linux讨论组]

编译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#
迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(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)

伊谢尔伦

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号