我正在编译Perl 5.30.1,并将与它和Apache 2.4.41一起使用mod_perl 2.0.11。
如果我尝试使用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之类的事情,但是类似的事情,但是我可能缺少正确的用法。
我也没有反对在mod_perl上启用线程(但是也找不到如何执行),如果没有性能下降(SO上的帖子似乎表明有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可能需要按原样启用线程,因此在这种情况下,是否有办法在编译选项中将其关闭。
我认为答案似乎是使用该选项编译mod_perl。
perl Makefile.PL MP_NO_THREADS=1
[如果有人想提供一个更完整的答案,关于现在是否不太希望这样做(或其他任何信息),因为Apache 2.4似乎有所变化,我很乐意接受他们的答案。