在Linux上安装Crypt :: SSLeay时出错

时间:2011-10-05 14:49:41

标签: linux perl ssl openssl

所以我正在尝试使用SSL ergo Apache Openssl和SSLeay安装Apache。我已经完成了Apache2和Openssl,知道我在安装SSLeay时遇到了困难。在所有命令都失败后,我得到perl Makefile.PL

perl Makefile.PL    
Found multiple possibilities for OpenSSL
      /opt/ssl (OpenSSL 0.9.8r)
      /usr (OpenSSL 0.9.8p)
    Which SSL install path do you want to use? [/opt/ssl]

build information

================================================

ssl library: OpenSSL 0.9.8r in /opt/ssl
ssl header:  openssl/ssl.h
libraries:   -L/opt/ssl/lib -lssl -lcrypto -lgcc
include dir: -I/opt/ssl/include

================================================

Note (probably harmless): No library found for -lgcc
Writing Makefile for Crypt::SSLeay
The test suite can attempt to connect to public servers
to ensure that the code is working properly. If you are
behind a strict firewall or have no network connectivity,
these tests may fail (through no fault of the code).
Do you want to run the live tests (y/N)? [N]

我选择了/ usr安装,因为那是我安装openssl-devel的安装,因为我查看this question, that is simmilar并发现需要openssl-devel。所以我安装了openssl-devel

rpm -qi openssl
Name        : openssl                      Relocations: (not relocatable)
Version     : 0.9.8a                            Vendor: SUSE LINUX Products GmbH, Nuernberg, Germany
Release     : 18.36                         Build Date: Mon 27 Jul 2009 03:55:03 PM CEST
Install Date: Mon 18 Jan 2010 10:42:42 AM CET      Build Host: deacon.suse.de
Group       : Productivity/Networking/Security   Source RPM: openssl-0.9.8a-18.36.src.rpm
Size        : 2998754                          License: BSD 3-Clause
Signature   : DSA/SHA1, Mon 27 Jul 2009 03:57:14 PM CEST, Key ID a84edae89c800aca
Packager    : http://bugs.opensuse.org
URL         : http://www.openssl.org/
Summary     : Secure Sockets and Transport Layer Security


rpm -qi openssl-devel
Name        : openssl-devel                Relocations: (not relocatable)
Version     : 0.9.8p                            Vendor: PLD
Release     : 1                             Build Date: Fri 19 Nov 2010 12:24:41 PM CET

Install Date: Wed 05 Oct 2011 03:47:56 PM CEST      Build Host: x86-64.titanium.pld-linux.org
Group       : Development/Libraries         Source RPM: openssl-0.9.8p-1.src.rpm
Size        : 2003899                          License: Apache-like
Signature   : (none)
Packager    : PLD
URL         : http://www.openssl.org/
Summary     : Development part of OpenSSL Toolkit libraries
Description :<br/>
Development part of OpenSSL library.
Distribution: PLD Titanium

但是当我运行make

时,我知道仍然会出现以下错误
make
cc -c  -I/opt/ssl/include -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBUGGING -fno-strict-aliasing -pipe -Wdeclaration-after-statement -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -fmessage-length=0 -Wall -D_FORTIFY_SOURCE=2 -g -Wall -pipe   -DVERSION=\"0.58\" -DXS_VERSION=\"0.58\" -fPIC "-I/usr/lib/perl5/5.8.8/x86_64-linux-thread-multi/CORE"   SSLeay.c
SSLeay.c: In function âXS_Crypt__SSLeay__CTX_newâ:
SSLeay.c:118: warning: unused variable âpacknameâ
SSLeay.c: In function âXS_Crypt__SSLeay__Conn_newâ:
SSLeay.c:395: warning: unused variable âpacknameâ
SSLeay.c: In function âXS_Crypt__SSLeay__CTX_use_pkcs12_fileâ:
SSLeay.c:287: warning: âRETVALâ may be used uninitialized in this function
Running Mkbootstrap for Crypt::SSLeay ()
chmod 644 SSLeay.bs
rm -f blib/arch/auto/Crypt/SSLeay/SSLeay.so
cc  -shared -L/usr/local/lib64 SSLeay.o  -o blib/arch/auto/Crypt/SSLeay/SSLeay.so       \
   -L/opt/ssl/lib -lssl -lcrypto        

/usr/lib64/gcc/x86_64-suse-linux/4.1.2/../../../../x86_64-suse-linux/bin/ld: /opt/ssl/lib/libssl.a(s2_clnt.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
/opt/ssl/lib/libssl.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make: *** [blib/arch/auto/Crypt/SSLeay/SSLeay.so] Error 1

我认为原因是perl找不到openssl-devel库,如果是这样,我如何链接它以便找到它。

提前感谢Almightybob

3 个答案:

答案 0 :(得分:2)

为什么不使用预先为您的发行版构建的版本?

$ sudo yum install perl-Crypt-SSLeay

(或一些近似的等价物)

答案 1 :(得分:0)

如果找不到库,通常会出现undefined symbol错误。这看起来更像它找到了库但不喜欢它。您是否有可能尝试使用64位perl的32位openssl或反之亦然?

答案 2 :(得分:0)

你对这些软件感到困惑。

在openSUSE和相关的发行版上,只需sudo zypper install apache2。 Apache httpd v2已经包含一个名为mod_ssl的OpenSSL绑定;此命令将自动安装所有必要的依赖关系到SSL上的服务内容,包括OpenSSL库。编译任何东西都不需要。

SSLeay是Perl HTTP 客户端堆栈的一部分。通过SSL访问远程服务器上的其他人的内容是很好的。这与您想要的相反,但如果您仍然需要,请先add the repository devel:language:perl,然后安装包perl-LWP-Protocol-https。同样,这将自动引入所需的依赖关系,包括perl-Net-SSLeay

要添加通常与Apache Web服务器一起使用的Perl内容,请添加存储库Apache:Modules,然后还安装包apache2-mod_apreq2apache2-mod_perllibapreq2perl-Apache2-Request