linux 编译 curl 出错

2015-11-12 22:43:09 +08:00
 yunhui
编译 curl make 死活不通过,唉
执行参数如下,谢谢各位帮忙看看
```
这一步一切正常
root@debian:~/curl-7.45.0# ./configure --with-ssl
```
![图片描述][1]

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

```

![图片描述][2]

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#
```

[1]: http://segmentfault.com/img/bVqTxQ
[2]: http://segmentfault.com/img/bVqTyo
11125 次点击
所在节点    Linux
45 条回复
hardware
2015-11-12 23:06:38 +08:00
指定 openssl 的路径了吗
yunhui
2015-11-12 23:14:53 +08:00
@hardware ./configure --with-ssl 完了之后 ssl 已经是 enabled 状态了。也就是已经读取到了。
yunhui
2015-11-12 23:15:49 +08:00
./configure --with-ssl=/usr/local/ssl 照样不行、
feather12315
2015-11-12 23:16:30 +08:00
能指定 ssl 源码文件吗?可以的话试试,别依赖系统库
hardware
2015-11-12 23:21:44 +08:00
那还有种可能是你编译 openssl 的时候 sslv2 没开
yunhui
2015-11-12 23:23:03 +08:00
@feather12315 ./configure --with-ssl=~/openssl-OpenSSL_1_0_2d 似乎连 ssl 状态都是 no 了
timonwong
2015-11-12 23:25:33 +08:00
openssl 自己编译的,是不是全局安装了。
你的情况可能是冲突:
1. 全局安装了 openssl 的 library 和 headers
2. curl 找到了 openssl ,用的是你自己安装的 header
3. curl 链接时,使用的是系统自带的 openssl lib
yunhui
2015-11-12 23:27:22 +08:00
@hardware 如果是这样的华,我重新编译下 openssl
yunhui
2015-11-12 23:28:39 +08:00
@timonwong

系统是最小化安装的,什么基础工具包都没有,我一步一路撸过来的, openssl 系统一开始都没有的,我自己编译的
wbsdty331
2015-11-12 23:33:33 +08:00
@timonwong 我也遇到这个问题了,原来是 debian 源里面装的 1.1 ,后来为了 nginx1.9.5 直接源码安装了 1.2 之后,每次编译 nginx 都要手动指定 openssl 源码库,不然就失败 不知道怎么搞
yunhui
2015-11-12 23:41:35 +08:00
@hardware 直接关了 sslv2 openssl 编译方法 ./config shared zlib no-ssl2 编译中
wdlth
2015-11-12 23:44:39 +08:00
1.0.2 废弃了部分东西,你可以用 1.0.1 编译,编译完不安装,直接指定路径编译 Curl 。

https://www.openssl.org/news/changelog.html#x0
wuruxu
2015-11-12 23:45:20 +08:00
感觉你最后在 link 的时候,没有加上 -lssl
znoodl
2015-11-12 23:45:42 +08:00
@wbsdty331 我记得编译 nginx 所依赖的 openssl 是不需要编译的,而是指定 openssl 源码路径,和安装不安装 openssl 没有关系。

好像以前的 nginx 版本需要编译 openssl ,你看下文档吧,记不太清了
yunhui
2015-11-12 23:51:45 +08:00
@hardware 直接关了 sslv2 openssl 编译方法 ./config shared zlib no-ssl2 编译 openssl
```
echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
ldconfig -v
```
然后然后~~~只是少了一行错误而已
```
../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
```
yunhui
2015-11-12 23:52:08 +08:00
@wdlth 一会试试 1.0.1
wbsdty331
2015-11-12 23:53:42 +08:00
@znoodl 我在编译 1.9.5 的时候没加 openssl 的路径 仍然报错
yunhui
2015-11-13 00:09:43 +08:00
@wdlth 果然好像少了 2 个错误
../lib/.libs/libcurl.so: undefined reference to `SSL_CTX_set_alpn_protos'
../lib/.libs/libcurl.so: undefined reference to `SSL_get0_alpn_selected'
我重新试试
yunhui
2015-11-13 00:15:42 +08:00
@znoodl ./config shared zlib no-ssl2 使用这招 不编译 ssl2 就不会报../lib/.libs/libcurl.so: undefined reference to `SSLv2_client_method'这个错误, ssl2 不编译也没事吧,落伍的协议了
hardware
2015-11-13 00:27:26 +08:00
@wdlth 编译完不安装 还不如直接在 curl 里屏蔽掉这个功能吧?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/235779

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX