openssl编译问题

openssl推荐编译安装,并且使用非系统默认目录,以防系统中有装二进制包,影响使用。

以下为今天在不同系统中编译时apache,php遇到的各种错:

1. libssl.a(s3_srvr.o): relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC 

第一个是apache在64位系统下的错位,增加-fPIC no-gost no-shared no-zlib参数解决,参考http://www.apachelounge.com/viewtopic.php?t=4690 

 

2. ab.c:: undefined reference to `SSLv2_client_method'

第二个是apache在使用openssl编译到系统默认目录时和自带openssl有冲突的,编译时使用非系统目录解决,为保证nginx正常使用--with-openssl=参数指定openssl源码目录

 

3.xp_ssl.c:333: undefined reference to `SSLv2_client_method'

第三个是PHP在debian平台的一个BUG,最早5.2时就已经有了并解决了,我用5.4发现还报错,对比文件发现是ifndef OPENSSL_NO_SSL2写成ifdef OPENSSL_NO_SSL2了,修改下编译OK,bug如下:https://bugs.php.net/patch-display.php?bug_id=54736&patch=debian_patches_disable_SSLv2_for_openssl_1_0_0.patch&revision=latest

 

发一个最终的编译命令

./config --prefix=/data/opt/ssl --openssldir=/data/opt/ssl  -fPIC no-gost no-shared no-zlib
make
make install

Tags: openssl

上一篇: LINUX多平台批量安装服务器环境工具   下一篇: archlinux安装手记

提交疑问

回顶部