在HP-UX (hpia11.31)上构建Perl 5.32.1的失败—与失败的正则表达式计算相关



我试图在hpia11.31系统上构建Perl 5.32.1,并且在正则表达式计算中出现了失败。例如,make_patchnum.pl失败是因为一个正则表达式打算从一个heredoc中提取文件名,而不是返回整个heredoc作为文件名:

./miniperl -Ilib make_patchnum.pl
Failed to open for write './lib/Config_git.pl' is generated by make_patchnum.pl
#          DO NOT EDIT DIRECTLY - edit make_patchnum.pl instead
######################################################################
$Config::Git_Data=<<'ENDOFGIT';
git_commit_id=''
git_describe=''    
git_branch=''
git_uncommitted_changes=''
git_commit_id_title='':File name too long at make_patchnum.pl line 84.

手动通过,configpm显示相同的问题:在5.32.1中提取变量头的regex计算失败,而在5.28.1中成功。例子:

Expected a Configure variable header, instead we got:
_exe (Unix.U):
This variable defines the extension used for executable files.
DJGPP, Cygwin and OS/2 use '.exe'.  Stratus VOS uses '.pm'.
On operating systems which do not require a specific extension
for executable files, this variable is empty.

我假设这是在构建过程中使用早期构建的regexec.c,尽管我不知道这一点。regexec.c构建报告了一些警告,但它们似乎与5.28.1报告的警告一致:我在这里没有看到任何表明它不起作用的东西。

以下是regexec.c的构建命令:
cc -c -DPERL_CORE -D_POSIX_C_SOURCE=199506L -D_REENTRANT 
-Ae -Wp,-H150000 -D_HPUX_SOURCE -Wl,+vnocompatwarnings +DD64 
-D_INCLUDE__STDC_A1_SOURCE -I/usr/local/include -D_LARGEFILE_SOURCE 
-D_FILE_OFFSET_BITS=64 +O2 +Onolimit regexec.c

知道为什么regex解析器在HP-UX和其他平台上的行为不同吗?我已经成功地为x86 Linux、plinux、zlinux、rs6000和Solaris构建了5.32.1,所以这似乎是HP-UX特有的。

编辑:编译器信息

bash-4.0$ /opt/aCC/bin/cc --version
cc: HP C/aC++ B3910B A.06.20 [May 13 2008]

您的cc是哪个编译器?您需要ANSI-C编译器能够在HP-UX上构建perl

$ cc—versioncc: HP C/ac++ B3910B A.06.28.02 [Mar 09 2016]

$ cc -Vcc: HP C/ac++ B3910B A.06.28.02 [Mar 09 2016]

最新更新