这是 perlhpux 命令,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器
程序:
您的姓名
perlhpux - 惠普 Unix (HP-UX) 系统上的 Perl 版本 5
商品描述
本文档介绍了 HP Unix 操作系统 (HP-UX) 的各种功能,这些功能将
影响 Perl 版本 5(以下简称 Perl)的编译和/或运行方式。
运用 perl的 as 运 - HP-UX
应用程序于 2001 年 11.00 月发布,HP-UX XNUMX 是第一个随 Perl 一起发布的。 由
时间是 /opt/perl 中的 perl-5.6.1。 第一次出现在 CD 5012-7954 上,可以是
安装使用
swinstall -s /cdrom perl
假设您已将该 CD 安装在 /cdrom 上。
该构建是一个便携式 hppa-1.1 多线程构建,支持编译的大文件
使用 gcc-2.9-hppa-991112。
如果您执行全新安装,则(更新的)Perl 将自动安装。
预安装的 HP-UX 系统现在具有更新版本的 Perl 和更新的模块。
来自 HP 的官方(线程)构建,因为它们在应用程序 DVD/CD 上提供
可在
<http://www.software.hp.com/portal/swdepot/displayProductInfo.do?productNumber=PERL> 为
PA-RISC 和 IPF(安腾处理器系列)。 它们是用 HP ANSI-C 构建的
编译器。 直到 5.8.8,这是由 ActiveState 完成的。
要查看 DVD 中包含的版本(假设此处安装在 /cdrom 上),请发出
这个命令:
# swlist -s /cdrom perl
# perl D.5.8.8.B 5.8.8 Perl 编程语言
perl.Perl5-32 D.5.8.8.B 32 位 5.8.8 Perl 编程语言与扩展
perl.Perl5-64 D.5.8.8.B 64 位 5.8.8 Perl 编程语言与扩展
要查看系统上安装了什么:
#swlist -R perl
# perl E.5.8.8.J Perl 编程语言
# perl.Perl5-32 E.5.8.8.J 带扩展的 32 位 Perl 编程语言
perl.Perl5-32.PERL-MAN E.5.8.8.J IA 的 32 位 Perl 手册页
perl.Perl5-32.PERL-RUN E.5.8.8.J IA 的 32 位 Perl 二进制文件
# perl.Perl5-64 E.5.8.8.J 带扩展的 64 位 Perl 编程语言
perl.Perl5-64.PERL-MAN E.5.8.8.J IA 的 64 位 Perl 手册页
perl.Perl5-64.PERL-RUN E.5.8.8.J IA 的 64 位 Perl 二进制文件
运用 perl的 在 惠普的 移植 中心
HP 移植中心试图跟上客户的需求并从 Open 发布更新
源社区。 拥有预编译的 Perl 二进制文件是显而易见的,尽管“高达 -
日期”是相对的。在撰写本文时,只有 perl-5.10.1 可用(带有
从搬运工的角度来看,5.16.3 是最新的稳定版本)。
HP 移植中心在允许移植到哪些系统方面受到限制,并且
通常选择可用的两个最新操作系统版本。
惠普已要求移植中心将开源二进制文件从 /选择 至 在/ usr /本地,所以
自 2002 年 XNUMX 月开始生成的二进制文件位于 /usr/local。
HP 移植中心 URL 之一是http://hpux.connect.org.uk/> 当前端口
available 是用 GNU gcc 构建的。
其他 预建 perl的 二进制
要获得适用于整个 HP-UX 范围的更多最新 perl 软件仓库,请访问 H.Merijn Brand 的
地点在http://mirrors.develooper.com/hpux/#Perl>。 仔细阅读注释,看看是否
可用版本适合您的需要。
编译中 Perl的 5 on HP-UX
编译 Perl 时,必须使用 ANSI C 编译器。 随附的 C 编译器
HP-UX 系统是一个 K&R 编译器,只能用于构建新内核。
Perl 可以用 HP 的 ANSI C 编译器或 gcc 编译。 前者是
推荐,因为它不仅可以毫无困难地编译 Perl,而且还可以
后面列出的需要使用 HP 编译器特定命令的功能的优势 -
线标志。
如果您决定使用 gcc,请确保您的安装是最新且完整的,并确保
阅读 Perl INSTALL 文件以获取更多 gcc 特定的详细信息。
精简指令集计算机
惠普的 HP9000 Unix 系统在惠普自己的精密架构 (PA-RISC) 芯片上运行。 用户体验
曾经在摩托罗拉 MC68000 系列芯片上运行,但任何装有此芯片的机器
已经过时了,本文档不会尝试解决编译 Perl 的问题
在摩托罗拉芯片组上。
本文档上次更新时 PA-RISC 的版本为 2.0,这也是
最后会有。 HP PA-RISC 系统通常与型号描述一起使用
“惠普 9000”。 该系列的最后一个 CPU 是 PA-8900。 支持 PA-RISC 架构
机器正式结束如下表所示:
PA-RISC 生命周期终止路线图
+--------+----------------+----------------+------ -----------+
| HP9000 | 巨蛋 | PA-8700 | 2011 年春季 |
| 4-128 | | PA-8800/sx1000 | 2012 年夏季 |
| 核心 | | PA-8900/sx1000 | 2014 |
| | | PA-8900/sx2000 | 2015 | XNUMX
+--------+----------------+----------------+------ -----------+
| HP9000 | rp7410, rp8400 | PA-8700 | 2011 年春季 |
| 2-32 | 7420-8420 rp8800,rp1000 | PA-2012/sxXNUMX | XNUMX |
| 核心 | rp7440, rp8440 | PA-8900/sx1000 | 2013 年秋季 |
| | | PA-8900/sx2000 | 2015 | XNUMX
+--------+----------------+----------------+------ -----------+
| HP9000 | rp44x0 | PA-8700 | 2011 年春季 |
| 1-8 | 8800-44 | PA-0/rp2012xXNUMX | XNUMX |
| 核心 | | PA-8900/rp44x0 | 2014 |
+--------+----------------+----------------+------ -----------+
| HP9000 | rp34x0 | PA-8700 | 2011 年春季 |
| 1-4 | 8800-34 | PA-0/rp2012xXNUMX | XNUMX |
| 核心 | | PA-8900/rp34x0 | 2014 |
+--------+----------------+----------------+------ -----------+
从http://www.hp.com/products1/evolution/9000/faqs.html>
HP 9000 系统的最后订购日期是 31 年 2008 月 XNUMX 日。
文件中包含构建操作系统时的完整模型列表
/usr/sam/lib/mo/sched.models。 第一列对应输出的最后一部分
的“模型”命令。 第二列是 PA-RISC 版本,第三列是
使用的确切芯片类型。 (从底部开始浏览以防止混淆;-)
# 模型
9000/800/L1000-44
# grep L1000-44 /usr/sam/lib/mo/sched.models
L1000-44 2.0 PA8500
便携性 之间 精简指令集计算机 选项
在 PA-RISC 2.0 平台上编译的可执行文件不会在 PA-RISC 1.1 上执行
平台,即使它们运行相同版本的 HP-UX。 如果你正在构建 Perl
PA-RISC 2.0 平台,并希望 Perl 也能在 PA-RISC 1.1 上运行,编译器标志
应使用 +DAportable 和 +DS32。
不再可能在 PA-RISC 1.0 或
2.0平台。 命令行标志被接受,但生成的可执行文件不会
转移到 PA-RISC 1.0 系统时运行。
精简指令集计算机 1.0
PA-RISC 的原始版本,HP 不再销售任何带有此芯片的系统。
以下系统包含 PA-RISC 1.0 芯片:
600,635,645,808,815,822,825,832,834,835,840,842,845,850,
852,855,860,865,870,890
精简指令集计算机 1.1
PA-RISC 设计的升级,它在许多不同的系统中出货多年。
以下系统包含 PA-RISC 1.1 芯片:
705,710,712,715,720,722,725,728,730,735,742,743,744,745,
747,750,755,770,777,778,779,800,801,803,806,807,809,811,
813,816,817,819,821,826,827,829,831,837,839,841,847,849,
851、856、857、859、867、869、877、887、891、892、897、A180、A180C、
B115、B120、B132L、B132L+、B160L、B180L、C100、C110、C115、C120、
C160L、D200、D210、D220、D230、D250、D260、D310、D320、D330、D350、
D360、D410、DX0、DX5、DXO、E25、E35、E45、E55、F10、F20、F30、G30、
G40,G50,G60,G70,H20,H30,H40,H50,H60,H70,I30,I40,I50,I60,
I70、J200、J210、J210XC、K100、K200、K210、K220、K230、K400、K410、
K420、S700i、S715、S744、S760、T500、T520
精简指令集计算机 2.0
PA-RISC 设计的最新升级,增加了对 64 位整数数据的支持。
截至本文档上次更新之日,以下系统包含 PA-RISC 2.0
筹码:
700,780,781,782,783,785,802,804,810,820,861,871,879,889,
893、895、896、898、899、A400、A500、B1000、B2000、C130、C140、C160、
C180、C180+、C180-XP、C200+、C400+、C3000、C360、C3600、CB260、D270、
D280、D370、D380、D390、D650、J220、J2240、J280、J282、J400、J410、
J5000、J5500XM、J5600、J7000、J7600、K250、K260、K260-EG、K270、K360、
K370、K380、K450、K460、K460-EG、K460-XP、K470、K570、K580、L1000、
L2000、L3000、N4000、R380、R390、SD16000、SD32000、SD64000、T540、
T600、V2000、V2200、V2250、V2500、V2600
就在惠普接管康柏之前,一些系统被重新命名。 包含的链接
解释已经死了,所以这里有一个简短的总结:
HP 9000 A-Class 服务器,现在更名为 HP Server rp2400 系列。
HP 9000 L-Class 服务器,现在更名为 HP Server rp5400 系列。
HP 9000 N-Class 服务器,现在更名为 HP Server rp7400。
rp2400、rp2405、rp2430、rp2450、rp2470、rp3410、rp3440、rp4410、
rp4440、rp5400、rp5405、rp5430、rp5450、rp5470、rp7400、rp7405、
rp7410、rp7420、rp7440、rp8400、rp8420、rp8440、Superdome
当前的命名约定是:
添加地址
||||`+- 00 - 99 相对容量和新鲜度(升级等)
|||`--- 每个架构的唯一编号,以确保不同
||| 系统没有相同的编号
||| 架构
||`---- 1 - 9 标识家庭和/或相对定位
||
|`----- c = ia32(顺式)
| p = 巴黎
| x = ia-64(安腾和安腾 2)
| h = 住房
`------ t = 塔
r = 机架优化
s = 超级可扩展
b = 刀片
sa = 设备
安腾 处理器 家庭 (特发性肺纤维化) 和 HP-UX
HP-UX 也可以在新的安腾处理器上运行。 这需要使用不同的
HP-UX 版本(当前为 11.23 或 11i v2),除了一些差异
在下面和后面的章节中详述,Perl 应该可以毫无问题地编译。
尽管 PA-RISC 二进制文件可以在 Itanium 系统上运行,但您不应尝试使用 PA-
Itanium 系统上的 Perl RISC 版本。 这是因为共享库创建在
运行 PA-RISC 可执行文件时无法加载 Itanium 系统。
HP Itanium 2 系统通常使用型号描述“HP Integrity”来表示。
安腾, 安腾 2 & 麦迪逊 6
HP 还提供配备 128 位 Itanium 处理器的服务器。 cx26x0 被告知有
麦迪逊 6. 截至本文档上次更新之日,以下系统包含
Itanium 或 Itanium 2 芯片(这可能已经过时):
BL60p、BL860c、BL870c、BL890c、cx2600、cx2620、rx1600、rx1620、rx2600、
rx2600hptc、rx2620、rx2660、rx2800、rx3600、rx4610、rx4640、rx5670、
rx6600、rx7420、rx7620、rx7640、rx8420、rx8620、rx8640、rx9610、
SX1000、SX2000
要查看有关您的机器的所有信息,请键入
# 模型
ia64 惠普服务器 rx2600
# /usr/contrib/bin/机器信息
HP-UX 版本
并非所有架构(PA = PA-RISC,IPF = Itanium Processor Family)都支持所有版本
HP-UX,这是一个简短的列表
HP-UX 版本内核架构出厂支持
------------- ------ -------------- -------------------- ---------------
10.20 32 位 PA 30-Jun-2003
11.00 32/64 PA 31 年 2006 月 XNUMX 日
11.11 11i v1 32/64 PA 31 年 2015 月 XNUMX 日
11.22 11i v2 64 IPF 30 年 2004 月 XNUMX 日
11.23 11i v2 64 PA & IPF 31 年 2015 月 XNUMX 日
11.31 11i v3 64 PA 和 IPF 31 年 2020 月 31 日(PA) 2022 年 XNUMX 月 XNUMX 日(IPF)
有关硬件/操作系统支持和预期寿命终止的完整列表,请参阅
<http://www.hp.com/go/hpuxservermatrix>
建筑物 动态 扩展 on HP-UX
HP-UX 支持可动态加载的库(共享库)。 共享库结束
后缀为.sl。 在 Itanium 系统上,它们以后缀 .so 结尾。
在使用特定 PA-RISC 版本的平台上创建的共享库不可用
默认情况下,在使用早期 PA-RISC 版本的平台上。 然而,这倒退
可以使用相同的 +DAportable 编译器标志(具有相同的 PA-
上面提到的 RISC 1.0 警告)。
在安腾平台上创建的共享库无法加载到 PA-RISC 平台上。
在 PA-RISC 平台上创建的共享库只能在 Itanium 平台上加载
如果它是试图加载 PA-RISC 库的 PA-RISC 可执行文件。 一个 PA-RISC
共享库不能加载到 Itanium 可执行文件中,反之亦然。
要创建共享库,必须执行以下步骤:
1. 使用 +z 或 +Z 标志编译源模块以创建 .o 模块
其中包含位置无关代码 (PIC)。 链接器将
在下一步中告诉您是否需要 +Z。
(对于 gcc,适当的标志是 -fpic 或 -fPIC。)
2. 使用 -b 标志链接共享库。 如果代码调用
其他系统库(例如,libm)中的任何函数,它必须
被包括在这一行。
(请注意,这些步骤通常由扩展的 Makefile 自动处理)。
如果这些依赖库在创建共享库时没有列出,你会得到
加载库时在运行时出现致命的“未解析的符号”错误。
您可以创建一个引用另一个库的共享库,该库可以是
存档库或共享库。 如果第二个库是共享库,则为
称为“依赖库”。 依赖库的名字记录在主共享中
库,但未链接到共享库。 相反,它在
主共享库已加载。 如果您在其中构建扩展,这可能会导致问题
系统并将其移动到另一个系统,其中库可能不在同一系统中
放在第一个系统上。
如果引用的图书馆是档案图书馆,则将其视为简单的馆藏
.o 模块(所有模块都必须包含 PIC)。 然后将这些模块链接到
共享库。
请注意,可以创建一个包含依赖库的库,该库是
已经链接到perl。
一些扩展,如 DB_File 和 Compress::Zlib 使用/需要为
perl 扩展/模块工作。 如果这些库是使用默认的
配置,您可能会遇到“无效的加载程序修复”之类的错误
在加载阶段。 HP 意识到了这个问题。 在 HP-UX cxx-dev 论坛中搜索
关于该主题的讨论。 简短的回答是 一切 (所有图书馆,
一切)必须用“+z”或“+Z”编译为PIC(位置无关代码)。
(对于 gcc,这将是“-fpic”或“-fPIC”)。 在 HP-UX 11.00 或更新版本中,链接器错误
消息应该告诉有问题的目标文件的名称。
更通用的方法是手动干预,例如 DB_File
模块,它需要 SleepyCat 的 libdb.sl:
# cd .../db-3.2.9/build_unix
# vi 生成文件
... 添加 +Z 到所有 cflags 以创建共享对象
CFLAGS= -c $(CPPFLAGS) +Z -Ae +O2 +Onolimit \
-I/usr/本地/包括-I/usr/include/X11R6
CXXFLAGS= -c $(CPPFLAGS) +Z -Ae +O2 +Onolimit \
-I/usr/本地/包括-I/usr/include/X11R6
# 清理干净
#使
# mkdir tmp
# cd tmp
# ar x ../libdb.a
# ld -b -o libdb-3.2.sl *.o
# mv libdb-3.2.sl 在/ usr / local / lib目录
# rm *.o
#光盘 在/ usr / local / lib目录
# rm -f libdb.sl
# ln -s libdb-3.2.sl libdb.sl
# cd .../DB_File-1.76
# 使 distclean
#perl 生成文件.PL
#使
# 进行测试
#进行安装
从 db-4.2.x 开始,不再需要手动执行此操作。 睡猫改变了
在 HP-UX 上自动添加 +z 的配置过程。
# cd .../db-4.2.25/build_unix
# 环境 CFLAGS=+DD64 LDFLAGS=+DD64 ../dist/configure
应该可以为 HP-UX 64 和 11.00i 生成 11 位共享库。
不再可能链接 PA-RISC 1.0 共享库(即使命令 -
行标志仍然存在)。
PA-RISC 和 Itanium 目标文件不可互换。 虽然你可以使用
ar 在 Itanium 系统上创建 PA-RISC 对象文件的存档库,您不能
使用 Itanium 链接编辑器链接它。
- HP ANSI C 编译器
使用此编译器构建 Perl 时,应确保将标志 -Aa 添加到
config.sh 文件中的 cpprun 和 cppstdin 变量(但请参阅有关 64 位
下面的perl)。 如果您使用的是最新版本的 Perl 发行版,这些标志是
自动设置。
即使 HP-UX 10.20 和 11.00 不再由 HP 主动维护,
HP ANSI C 编译器仍然不时可用,建议您
查看更新是否适用。 在撰写本文时,最新可用补丁
对于 11.00,应该应用的是 PHSS_35098、PHSS_35175、PHSS_35100、PHSS_33036 和
PHSS_33902)。 如果您有 SUM 帐户,则可以使用它来搜索更新/补丁。
输入“ANSI”作为关键字。
- GNU C 编译器
当您打算使用 GNU C 编译器 (gcc) 而您还没有 gcc 时,您可以
要么从源代码中自己构建它(可从例如
<http://gcc.gnu.org/mirrors.html>) 或从 HP 移植中心获取预构建的二进制文件
在http://hpux.connect.org.uk/hppd/cgi-bin/search?term=gcc&Search=Search> 或从
DSPP(您需要成为会员)在
<http://h21007.www2.hp.com/portal/site/dspp/menuitem.863c3e4cbcdc3f3515b49c108973a801?ciid=2a08725cc2f02110725cc2f02110275d6e10RCRD&jumpid=reg_r1002_usen_c-001_title_r0001>
(浏览列表,因为经常有同一个包的多个版本
可用)。
大多数提到的发行版是仓库。 H.Merijn Brand 已经制作了预构建的 gcc 二进制文件
可在http://mirrors.develooper.com/hpux/> 和/或http://www.cmve.net/~merijn/>
适用于 HP-UX 10.20(仅 32 位)、HP-UX 11.00、HP-UX 11.11 (HP-UX 11i v1) 和 HP-UX 11.23
(HP-UX 11i v2 PA-RISC) 32 位和 64 位版本。 对于 HP-UX 11.23 IPF 和 HP-UX
11.31 IPF 仓库也可用。 IPF 版本不需要两个版本的 GNU gcc。
在 PA-RISC 上,32 位应用程序和 64 位应用程序需要不同的编译器
应用程序。 在 PA-RISC 上,32 位对象和 64 位对象不混合。 时期。 有
HP C-ANSI-C 或 GNU gcc 没有不同的行为。 所以如果你需要你的 perl 二进制文件
使用 64 位库,例如 Oracle-64bit,您必须构建一个 64 位 perl。
只有当您拥有 HP
C-ANSI C 编译器或已经可用的 64 位 gcc 二进制文件。 最棒的表演
for perl 是通过 HP 的本机编译器实现的。
运用 L大号 档 - Perl的 on HP-UX
从 HP-UX 10.20 版开始,可以创建大于 2GB(2^31 字节)的文件并
被操纵。 可以使用三种不同的方法来执行此操作。 在这些方法中,
Perl 的最佳方法是使用 -Duselargefiles 标志进行编译以进行配置。 这个
导致使用 64 位宽的结构和函数编译 Perl,
而不是 32 位宽。 (请注意,这仅适用于 HP 的 ANSI C 编译器。如果
你想用 gcc 编译 Perl,你必须得到一个编译器版本
支持 64 位操作。 请参阅上文以了解在哪里可以找到它。)
这种方法有一些缺点。 一是任何呼叫任何分机
文件操作 C 函数将需要重新编译(只需遵循通常的“perl
生成文件.PL; 制作; 进行测试; 进行安装”程序)。
需要重新编译的函数列表是:
创建, fgetpos, fopen,
freopen、fsetpos、fstat、
fstatvfs、fstatvfsdev、ftruncate、
ftw、lockf、lseek、
lstat、mmap、nftw、
打开,预分配,统计,
statvfs、statvfsdev、tmpfile、
截断、getrlimit、setrlimit
另一个缺点仅对 5.6.0 之前的 Perl 版本有效。 这个缺点是
seek 和 tell 函数(内置版本和 POSIX 模块版本)不会
正确执行。
强烈建议您在运行 Configure 时使用此标志。 如果你不
这样做,但稍后在Configure询问您时回答有关大文件的问题,您可能
获取无法编译或无法按预期运行的配置。
螺纹的 Perl的 on HP-UX
可以在 10.30 之前的任何版本的 HP-UX 上编译线程 Perl 版本,
但强烈建议您至少在 HP-UX 11.00 上运行。
要使用线程编译 Perl,请将 -Dusethreads 添加到 Configure 的参数中。 验证
-D_POSIX_C_SOURCE=199506L 编译器标志会自动添加到标志列表中。
还要确保在链接 Perl 的库列表中 -lpthread 列在 -lc 之前
和。 在配置期间为 HP-UX 提供的提示将非常努力地做到这一点
为你。
10.30 之前的 HP-UX 版本需要单独安装 POSIX 线程库
包裹。 两个示例是 HP DCE 软件包,可在“HP-UX Hardware Extensions 3.0、
安装和核心操作系统,10.20 版,1999 年 3920 月 (B13941-XNUMX)”或免费提供的 PTH
包,可在 H.Merijn 的网站上获得(http://mirrors.develooper.com/hpux/>)。 指某东西的用途
PTH 在 perl-5.12 及更高版本中不受支持,并且在 5.11.x 中相当有问题。
如果您打算使用 HP DCE 包,则用于线程处理的库是
/usr/lib/libcma.sl,但随着时间的推移,该库有多次更新。 珀尔
将使用第一个版本构建,但不会通过测试套件。 旧甲骨文
版本可能是不更新该库的令人信服的理由,否则请找到
以下补丁之一中的较新版本:PHSS_19739、PHSS_20608 或 PHSS_23672
重新格式化的输出:
d3:/ usr / lib目录 106 > 什么是 libcma-*.1
libcma-00000.1:
HP DCE/9000 1.5 模块:libcma.sl(导出)
日期:29 年 1996 月 22 日 11:24:XNUMX
libcma-19739.1:
HP DCE/9000 1.5 PHSS_19739-40 模块:libcma.sl(导出)
日期:4 年 1999 月 01 日 59:07:XNUMX
libcma-20608.1:
HP DCE/9000 1.5 PHSS_20608 模块:libcma.1(导出)
日期:8 年 1999 月 18 日 41:23:XNUMX
libcma-23672.1:
HP DCE/9000 1.5 PHSS_23672 模块:libcma.1(导出)
日期:9 年 2001 月 10 日 01:06:XNUMX
d3:/ usr / lib目录 107>
如果选择 PTH 包,请使用 swinstall 将 pth 安装在默认位置
(/opt/pth),然后建立指向库的符号链接 / usr / lib目录
#光盘 / usr / lib目录
# ln -s /opt/pth/lib/libpth* 。
为了构建支持 Oracle 的 perl,它需要与 libcl 和 libpthread 链接。 所以
即使您的 perl 是非线程构建,也可能需要这些库。 见“甲骨文
在 HP-UX 上”。
64 bit Perl的 on HP-UX
从 HP-UX 11.00 开始,在 HP-UX 下编译的程序可以利用 LP64
编程环境(LP64 表示 Longs 和 Pointers 是 64 位宽),其中标量
变量将能够完全精确地保存大于 2^32 的数字。 Perl 有
自 64 以来,在所有 HP-UX 5.8.1.xx 上都被证明在 11 位模式下是一致和可靠的。
截至本文档发布之日,Perl 在 HP-UX 64 及更高版本上完全兼容 11.00 位
cc- 和 gcc 构建。 如果您准备使用 GNU gcc 构建 64 位 perl,请阅读
仔细查看 gcc 部分。
如果用户需要在 LP64 环境中编译 Perl,请使用
-Duse64bitall 标志配置。 这将强制 Perl 编译为纯 LP64
环境(对于 HP C-ANSI-C 带有 +DD64 标志,对于 GNU gcc 没有附加选项
PA-RISC 上为 64 位,Itanium 上为 GNU gcc 使用 -mlp64)。 如果你想编译 Perl
使用 gcc,您必须获得支持 64 位的编译器版本
操作。)
您还可以使用 -Duse64bitint 标志进行配置。 虽然有一些小
使用此标志编译 Perl 与 -Duse64bitall 标志之间的差异,它们
从 Perl 用户的角度来看,应该不会引起注意。 配置 -Duse64bitint 时
在 pa-risc 架构上使用 64 位 gcc,-Duse64bitint 被悄悄提升为
-Duse64bitall。
在这两种情况下,强烈建议您在运行 Configure 时使用这些标志。
如果您不使用,请执行此操作,但稍后回答有关 64 位数字的问题时
配置问你,你可能会得到一个无法编译的配置,或者没有
按预期运行。
神谕 on HP-UX
使用 perl 通过 DBI 和 DBD::Oracle 连接 Oracle 数据库已经引起了很多
让人很头疼。 阅读 DBD::Oracle 中的 README.hpux 了解更多信息。 这
在这里提到它的原因是 Oracle 需要一个用 libcl 和 libpthread 构建的 perl,
后者即使在没有线程的情况下构建 perl 也是如此。 使用所有默认值构建 perl,但是
仍然能够在以后构建 DBD::Oracle 可以使用
配置 -A prepend:libswanted='cl pthread' ...
不要忘记尾随引号之前的空格。
另请注意,这(还)不适用于所有配置,已知会失败
64 位版本的 GCC。
广义数据库管理系统 和 Threads on HP-UX
如果您尝试在 11.X 系统上使用 (POSIX) 线程编译 Perl 并在
GDBM 库,那么 Perl 将在启动时立即进行核心转储。 唯一的解决方法
此时就是重新链接11.X下的GDBM库,然后重新链接到Perl中。
错误可能显示如下:
Pthread 内部错误:消息:__libc_reinit() 失败,文件:../pthreads/pthread.c,
行:1096 返回指针是 0xc082bf33 sh:5345 退出(核心转储)
和配置将放弃。
NFS的 文件系统 和 时间(2) on HP-UX
如果您在远程挂载的 NFS 文件系统上编译 Perl,则测试 io/fs.t 可能会失败
在测试#18。 这似乎是 HP-UX 中的一个错误,目前没有可用的修复程序。
HP-UX 核心 参数 (最大尺寸) HPMC胶囊 编译中 Perl的
默认情况下,HP-UX 配置的最大数据段大小为 64MB。 这也是
小以正确编译具有最大优化级别的 Perl。 你可以增加
通过使用 SAM 确定 maxdsiz 内核参数的大小。
使用 GUI 版本的 SAM 时,单击内核配置图标,然后单击
可配置参数图标。 向下滚动并选择 maxdsiz 行。 从行动
菜单,选择修改可配置参数项。 将新公式插入
公式/值框。 然后按照说明重建内核并重新启动
系统。
一般来说,256MB(或“256*1024*1024”)的值足以让 Perl 在
最大优化。
nss_删除 核心 倾倒 在 操作/重复 or 操作/授权
您可能会从 op/pwent 或 op/grent 测试中获得总线错误核心转储。 如果用 -g 编译
您将看到类似于以下内容的堆栈跟踪:
#0 0xc004216c in () 来自 /usr/lib/libc.2
#1 0xc00d7550 在 __nss_src_state_destr () 来自 /usr/lib/libc.2
#2 0xc00d7768 在 __nss_src_state_destr () 来自 /usr/lib/libc.2
#3 nss_delete () 中的 0xc00d78a8 来自 /usr/lib/libc.2
#4 来自 /usr/lib/libc.0 的 endpwent () 中的 01126xc8d2
#5 0xd1950 in Perl_pp_epwent () from ./perl
./perl 中的 Perl_runops_standard () 中的#6 0x94d3c
#7 0x23728 在 S_run_body () 中来自 ./perl
#8 0x23428 in perl_run () from ./perl
#9 ./perl 的 main () 中的 0x2005c
这里的关键是“nss_delete”调用。 此错误的一种解决方法似乎是创建
添加到文件中 /etc/nsswitch.conf (至少)以下几行
组:文件
密码:文件
您是否使用 NIS 并不重要。 令人惊讶的是,同样的错误也会影响
Solaris。
错误: 粘贴 “)” 和 “ l” 不 而不去 给 a 有效 预处理 象征
HP-UX 11.00 中似乎有一个损坏的系统头文件,它破坏了 perl 构建
GNU gcc-32.x 的 4 位模式导致此错误。 HP-UX 11.11 的相同文件(即使
文件较旧)不显示此故障,并且具有正确的定义,因此最好
修复是修补标题以匹配:
--- /usr/include/inttypes.h 2001-04-20 18:42:14 +0200
+++ /usr/include/inttypes.h 2000-11-14 09:00:00 +0200
@@ -72,7 + 72,7 @@
#define UINT32_C(__c) __CONCAT_U__(__c)
#else /* __LP64 */
#define INT32_C(__c) __CONCAT__(__c,l)
-#define UINT32_C(__c) __CONCAT__(__CONCAT_U__(__c),l)
+#define UINT32_C(__c) __CONCAT__(__c,ul)
#endif /* __LP64 */
#define INT64_C(__c) __CONCAT_L__(__c,l)
重新申报 of “发送路径” - a 不同 存储 程 说明符
在 11.31 之前的 HP-UX 发行版中可能会出现以下编译警告,但
无害:
cc:“/usr/include/sys/socket.h”,第 535 行:警告 562:使用不同的存储类说明符重新声明“sendfile”:“sendfile”将具有内部链接。
cc:“/usr/include/sys/socket.h”,第 536 行:警告 562:使用不同的存储类说明符重新声明“sendpath”:“sendpath”将具有内部链接。
它们似乎是由损坏的系统头文件以及其他开源项目引起的
正在看到他们。 以下 HP-UX 补丁应该可以消除警告:
CR JAGae12001:PHNE_27063
由于原型的重新声明,sys/socket.h 上的警告 562
CR JAGae16787:
来自 socket.h 的警告 562 sendpath/sendfile -D_FILEFFSET_BITS=64
CR JAGae73470 (11.23)
ER:使用 cc -D_FILEFFSET_BITS=64 编译 socket.h 警告 267/562
其他
HP-UX 11 Y2K 补丁“Y2K-1100 B.11.00.B0125 HP-UX Core OS Year 2000 Patch Bundle”已经
报告打破了 io/fs 测试 #18,它测试是否 时间() 可以更改时间戳。
Y2K补丁似乎坏了 时间() 以便通过 NFS 时间戳不会改变
(在本地文件系统上 时间() 仍然有效)。 这可能已在您的系统上修复
现在。
使用 onworks.net 服务在线使用 perlhpux