加载mod_perl.so时出错



我已经安装了perl-5.8.9、mod_perl-2.0.7、Embperl-2.30和httpd-2.2.22。在启动apache时,我得到了如下错误(为了可读性,分为多行(:

httpd: Syntax error on line * of ../conf/httpd.conf:
   Cannot load ../Apache2/mod_perl.so into server:
      libperl.so: cannot open shared object file:
         No such file or directory

通过执行ldd ../Apache2/mod_perl.so,我得到了类似的输出

    linux-gate.so.1 =>  (0x00735000)
    libperl.so => not found
    libnsl.so.1 => /lib/libnsl.so.1 (0x005e5000)
    libdl.so.2 => /lib/libdl.so.2 (0x00fab000)
    libm.so.6 => /lib/libm.so.6 (0x0041f000)
    libcrypt.so.1 => /lib/libcrypt.so.1 (0x0084d000)
    libutil.so.1 => /lib/libutil.so.1 (0x00110000)
    libc.so.6 => /lib/libc.so.6 (0x00197000)
    /lib/ld-linux.so.2 (0x00163000)

[这个问题可以转移到Unix和LinuxSE。]

您似乎安装了不完全兼容的程序包,一个或多个程序包安装不正确,安装说明缺少一个步骤,1或1动态链接器默认值与预期不符。

CCD_ 2(毫不奇怪(是CCD_ 3的一部分。在一些平台上,一个普通的perl默认构建将只创建libperl.a静态库,尽管可以创建一个动态库libperl.so,或者两者都创建。有些人喜欢.so方法,尽管它可能会带来一些性能开销。

你的问题最可能的原因是:

  1. 安装的perl只有静态的libperl.a,但mod_perl是根据带有libperl.so动态perl构建的
  2. perl软件包在动态链接器看不到的地方安装了libperl.so

解决原因#1意味着找到不同的兼容包(或者可能是组合包(。

如果它是#2,您应该能够定位libperl.so(类似于/usr/local/lib/perl5/5.8.9/mach/CORE/的某个地方(,或者只运行ldd /usr/local/bin/perl(无论新的perl二进制文件安装到哪里(,看看它是否知道它在哪里。

在尝试下面建议的任何更改之前,只需以root身份运行ldconfig,然后重试,以防修复。

如果您在新的perl安装目录下找到libperl.so,那么您可以将该文件复制到Apache lib/子目录中,因为应该构建Apache(使用ELF RPATH(以将该目录包含在库搜索路径中。如果在libperl0下找到它,则应修改默认链接器配置(/etc/ld.so.conf(以包含该目录,并刷新(以root身份运行ldconfig(。

你的平台显然是Linux,但你没有说明包的类型和来源,也没有说明它是否是源代码构建,所以我再准确不过了。。。

我有点怀疑某些东西没有正确安装,因为Apache模块的传统位置在modules/子目录中,而不是直接在ServerRoot中。

相关内容

  • 没有找到相关文章

最新更新