内容

名称

perlirix - Irix 系统上的 Perl 版本 5

描述

本文档描述了 Irix 的各种特性,这些特性会影响 Perl 版本 5(以下简称 Perl)的编译和/或运行方式。

在 Irix 中构建 32 位 Perl

使用

sh Configure -Dcc='cc -n32'

编译 32 位 Perl。除非您拥有 7.1 或更高版本的编译器(使用 cc -version 检查),否则不要使用 -n32。

(构建 'cc -n32' 是默认设置。)

在 Irix 中构建 64 位 Perl

使用

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 的编译器版本

一些 Irix cc 版本,例如 7.3.1.1m(尝试 cc -version)已知在编译 perl.c 时存在问题(核心转储)。如果您使用了 -OPT:fast_io=ON 并且发生了这种情况,请尝试将其删除。如果失败,或者您没有使用它,那么请尝试调整其他优化选项(-LNO、-INLINE、-O3 到 -O2 等)。编译器错误已报告给 SGI。(Allen Smith <[email protected]>)

Irix 中的链接器问题

如果您收到有关 so_locations 的投诉,请在文件 hints/irix_6.sh 中搜索“lddflags”并进行建议的调整。(David Billinghurst <[email protected]>)

Irix 中的 Malloc

不要尝试使用 Perl 的 malloc,这会导致非常神秘的错误(尤其是在使用 -Duse64bitall 时)。

在 Irix 中使用线程构建

使用 -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.

Irix 5.3

在运行 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