perl - 无线程编译 Perl
问题描述
我正在编译 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 之类的东西,以及类似的东西,但我可能缺少正确的使用方法。
如果没有性能影响,我也没有反对在 mod_perl 上启用线程(但也找不到如何做到这一点)(SO 上的帖子似乎暗示有 10% 的命中,但不确定那是否是仍然相关)
我采取的步骤(新服务器)是..downloading
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 似乎有一些变化,我很乐意接受他们的回答。
推荐阅读
- python - 杀死从 shell 脚本调用的脚本启动的所有进程
- .net - 为什么 Guid.NewGuid 总是在同一个位置有一个 4?
- database - MongoDB 4.2 更新管道。查询:嵌套数组中的“推送或更新”
- python-3.7 - 如何从进一步计算中排除列表的某些元素
- html - list-style-image: url('imageurl') 不在网页上显示图片
- discord.js - Discord.js 事件更新存在垃圾邮件
- python - 初学者python,TypeError:+的不支持的操作数类型:'float'和'str'
- php - 为什么会出现“警告:文件(...):无法打开流”错误?
- api - UFT API 测试:如何为请求中的元素生成数字
- scala - 窗口规格/功能执行最佳方式或应首选任何替代方式