【问题标题】:Error while installing Crypt::SSLeay on linux在 Linux 上安装 Crypt::SSLeay 时出错
【发布时间】:2011-10-05 14:49:41
【问题描述】:

所以我正在尝试使用 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库,如果是我如何链接它以便可以找到它。

提前感谢全能鲍勃

【问题讨论】:

  • 我必须用Crypt::SSLeay 解决很多问题。重做Makefile.PL 就是其中之一。这些天中的一天,我要解决它。同时,如果您的发行版提供预打包版本,请使用预打包版本。

标签: linux perl ssl openssl


【解决方案1】:

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

$ sudo yum install perl-Crypt-SSLeay

(或类似的)

【讨论】:

  • 'yast' 也可以,我不想花时间安装 yum
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    您对软件的各个部分感到困惑。

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

    SSLeay 是 Perl HTTP client 堆栈的一部分。它适用于通过 SSL 访问远程服务器上其他人的内容。这与你想要的相反,但如果你想要它,首先add the repositorydevel:language:perl,然后安装包perl-LWP-Protocol-https。同样,这将自动引入所需的依赖项,包括 perl-Net-SSLeay

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-10
      • 1970-01-01
      • 2011-08-27
      • 2014-06-14
      • 2016-03-04
      相关资源
      最近更新 更多