linux 编译 curl 出错

发布于 2022-09-01 23:14:07 字数 1053 浏览 15 评论 0

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

薯片软お妹 2022-09-08 23:14:07

你的系统可能已经自带了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

定格我的天空 2022-09-08 23:14:07

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文