免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 9313 | 回复: 2
打印 上一主题 下一主题

[系统管理] openssl升级之后,nginx编译错误 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-05-08 20:00 |只看该作者 |倒序浏览
本帖最后由 youzhengchuan 于 2014-05-08 20:06 编辑

近期把openssl升级到最新的 1.01g,升级是按照大众化的升级方式:
  1. ./config
  2. make
  3. make install

  4. mv /usr/bin/openssl /usr/bin/openssl.OFF
  5. mv /usr/include/openssl /usr/include/openssl.OFF

  6. ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
  7. ln -s /usr/local/ssl/include/openssl /usr/include/openssl
  8. echo '/usr/local/ssl/lib/' >> /etc/ld.so.conf
复制代码
升级完毕之后,安装nginx的时候,发现编译错误:

  1.         objs/ngx_modules.o \
  2.         -lpthread -lcrypt -lpcre -lssl -lcrypto -ldl -lz
  3. objs/src/event/ngx_event_openssl.o: In function `ngx_ssl_ecdh_curve':
  4. /usr/local/src/nginx-1.4.2/src/event/ngx_event_openssl.c:639: undefined reference to `EC_KEY_new_by_curve_name'
  5. /usr/local/src/nginx-1.4.2/src/event/ngx_event_openssl.c:650: undefined reference to `EC_KEY_free'
  6. objs/src/event/ngx_event_openssl_stapling.o: In function `ngx_ssl_stapling_responder':
  7. /usr/local/src/nginx-1.4.2/src/event/ngx_event_openssl_stapling.c:358: undefined reference to `X509_get1_ocsp'
  8. collect2: ld returned 1 exit status
  9. make[1]: *** [objs/nginx] Error 1
  10. make[1]: Leaving directory `/usr/local/src/nginx-1.4.2'
  11. make: *** [build] Error 2
复制代码
从这个现象看,貌似是读取到了新的openssl版本,但是加载了旧的ssl库,于是我找到了系统中的libssl看了一下:

  1. # find /lib64/ /lib /usr/lib /usr/lib64/ -name 'libssl.so*' -exec ls -l {} \;
  2. lrwxrwxrwx 1 root root 16 Aug  3  2011 /lib64/libssl.so.4 -> libssl.so.0.9.7a
  3. -rwxr-xr-x 1 root root 306472 Dec 17  2008 /lib64/libssl.so.0.9.8e
  4. -rwxr-xr-x 1 root root 241800 Dec 18  2008 /lib64/libssl.so.0.9.7a
  5. lrwxrwxrwx 1 root root 16 Aug  3  2011 /lib64/libssl.so.6 -> libssl.so.0.9.8e
  6. -rwxr-xr-x 1 root root 286396 Dec 17  2008 /lib/libssl.so.0.9.8e
  7. lrwxrwxrwx 1 root root 16 Aug  3  2011 /lib/libssl.so.6 -> libssl.so.0.9.8e
  8. lrwxrwxrwx 1 root root 26 Aug  3  2011 /usr/lib/libssl.so -> ../../lib/libssl.so.0.9.8e
  9. lrwxrwxrwx 1 root root 28 Aug  3  2011 /usr/lib64/libssl.so -> ../../lib64/libssl.so.0.9.8e
复制代码
可以看到 主要的libssl 是这个文件:/lib64/libssl.so.0.9.8e
可是这个玩意却是旧的库文件。

我到 /usr/local/ssl 中,却没有找到新的libssl.so文件?难道编译的时候不会生成so文件?

  1. # find /usr/local/ssl/ /usr/local/src/openssl-1.0.1g/ -name 'libssl.so*' -exec ls -l {} \;
复制代码
这里是NULL,没有找到任何库?

请问,这是为毛啊!

那要怎么样才能编译得到新的libssl.so

卧槽~

论坛徽章:
0
2 [报告]
发表于 2014-05-14 17:44 |只看该作者
顶一下!求答案啊,不要沉!

论坛徽章:
0
3 [报告]
发表于 2014-05-15 14:04 |只看该作者
./config  --shared --openssldir=。。。
加上shared 会出来.so
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP