【发布时间】:2020-02-20 13:43:58
【问题描述】:
我正在编译 Perl 5.30.1,并将使用 mod_perl 2.0.11 和 Apache 2.4.41。
如果我尝试使用 perl MakeFile.pm 编译 mod_perl,我会得到
Configuring Apache/2.4.41 mod_perl/2.0.11 Perl/v5.30.1
Using Perl 5.030001 w/o ithreads and httpd-2.4.
Failed requirements: Perl built with ithreads (build perl with -Duseithreads)
我们不使用线程,所以感觉最简单的方法是从 Perl 编译选项中删除它...
我可以看到人们说如何使用它进行编译(我猜在旧版本的 Perl 上默认情况下它是关闭的?)
-Dusethreads
但我假设它现在默认启用?在这种情况下,没有它我该如何编译?
如果我查看它建议的 myconfig 文件
useithreads=undef
我尝试过诸如 -Dusethreads=no 或 false 之类的方法,但我可能缺少正确的使用方法。
如果没有性能影响(S.O 上的帖子似乎表明有 10% 的影响,但不是确定这是否仍然相关)
我采取的步骤(新服务器)是..下载
perl-5.30.1 and mod_perl-2.0.11
然后
CFLAGS='-m64 -mtune=nocona' ./Configure -des -A ccflags=-fPIC -Dprefix=/opt/perl
perl -v 不显示线程。
然后是 mod_perl
Perl Makefile.PL
Apache 编译
./configure --enable-proxy --enable-rewrite --enable-headers --enable-ssl --with-apr=/usr/local/apr/
编辑:所以可能是 mod_perl 需要启用线程,如果是这种情况,有没有办法在编译选项中关闭它。
【问题讨论】:
-
Perl 默认构建时没有线程(可能在 Windows 上除外?)
-
错误是说没有满足线程的要求,这意味着它想要线程。
-
哦!我读错了,以为是说我用线程编译了它……我想接下来会出现相反的问题,如何使 mod_perl 不需要线程,或者它是强制性的。
-
顺便说一下,查看是否添加了线程支持的简单方法是
perl -v。如果添加了支持,thread将包含在拱形(“为...构建”)字符串中。 -
您能否提供您为解决当前情况而采取的步骤,以便我可以复制它们来研究问题?