perlirix - Irix 系统上的 Perl 版本 5
本文档描述了 Irix 的各种特性,这些特性会影响 Perl 版本 5(以下简称 Perl)的编译和/或运行方式。
使用
sh Configure -Dcc='cc -n32'
编译 32 位 Perl。除非您拥有 7.1 或更高版本的编译器(使用 cc -version 检查),否则不要使用 -n32。
(构建 'cc -n32' 是默认设置。)
使用
sh Configure -Dcc='cc -64' -Duse64bitint
这需要一个 64 位 MIPS CPU(R8000、R10000 等)。
您也可以使用
sh Configure -Dcc='cc -64' -Duse64bitall
但这与 -Duse64bitint 没什么区别,因为使用了 cc -64
。
您也可以执行
sh Configure -Dcc='cc -n32' -Duse64bitint
使用 long long 作为 64 位整数类型,以防您没有 64 位 CPU。
如果您使用的是 gcc,只需
sh Configure -Dcc=gcc -Duse64bitint
就足够了,Configure 应该会自动探测到正确的 64 位设置。
一些 Irix cc 版本,例如 7.3.1.1m(尝试 cc -version)已知在编译 perl.c 时存在问题(核心转储)。如果您使用了 -OPT:fast_io=ON 并且发生了这种情况,请尝试将其删除。如果失败,或者您没有使用它,那么请尝试调整其他优化选项(-LNO、-INLINE、-O3 到 -O2 等)。编译器错误已报告给 SGI。(Allen Smith <[email protected]>)
如果您收到有关 so_locations 的投诉,请在文件 hints/irix_6.sh 中搜索“lddflags”并进行建议的调整。(David Billinghurst <[email protected]>)
不要尝试使用 Perl 的 malloc,这会导致非常神秘的错误(尤其是在使用 -Duse64bitall 时)。
使用 -Duseithreads 运行 Configure,这将使用 Perl 5.8.0 “解释器线程”配置 Perl,请参阅 线程。
对于带有 perl 线程的 Irix 6.2,您必须安装以下补丁
1404 Irix 6.2 Posix 1003.1b man pages
1645 Irix 6.2 & 6.3 POSIX header file updates
2000 Irix 6.2 Posix 1003.1b support modules
2254 Pthread library fixes
2401 6.2 all platform kernel rollup
重要:如果没有补丁 2401,Irix 6.2 中的内核错误会导致您的机器在运行带线程的 perl 时出现恐慌并崩溃。Irix 6.3 及更高版本可以正常使用。
Thanks to Hannu Napari <[email protected]> for the IRIX
pthreads patches information.
在运行 Configure 和构建时,您可能会收到很多这样的警告
ld:
The shared object /usr/lib/libm.so did not resolve any symbols.
You may want to remove it from your link line.
忽略它们:在 IRIX 5.3 中,无法使 ld 静默此问题。
在编译期间,您将从 toke.c 中看到此警告
uopt: Warning: Perl_yylex: this procedure not optimized because it
exceeds size threshold; to optimize this procedure, use -Olimit
option with value >= 4252.
忽略此警告。
在 IRIX 5.3 和 Perl 5.8.1(Perl 5.8.0 无法在 IRIX 5.3 中编译)中,以下故障是已知的。
Failed Test Stat Wstat Total Fail Failed|Failing List
-----------------------------------------------------------------------
../ext/List/Util/t/shuffle.t 0 139 ?? ?? % ??
../lib/Math/Trig.t 255 65280 29 12 41.38% 24-29
../lib/sort.t 0 138 119 72 60.50% 48-119
56 tests and 474 subtests skipped.
Failed 3/811 test scripts, 99.63% okay. 78/75813 subtests failed,
99.90% okay.
它们被怀疑是编译器错误(至少 shuffle.t 故障已知来自某些 IRIX 6 设置)和数学库错误(Trig.t 故障),但由于 IRIX 5 已经很久没有生命周期了,因此不太可能对 IRIX 进行进一步的修复。如果您能为 5.3 获取 gcc,您也可以尝试一下,因为 IRIX 6 中的 gcc 是至少针对 shuffle.t 和 sort.t 故障的已知解决方法。
Jarkko Hietaniemi <[email protected]>
请将任何错误、更新或建议报告到 https://github.com/Perl/perl5/issues。