在AIX版本5.3上编译perl> 5.10

时间:2016-11-02 17:18:33

标签: c perl aix xlc

我一直在多个平台上编译OpenSSL(因此它是Perl> 5.10,因为它是一个依赖项)。我已经设法在除AIX之外的每个平台上编译1.1.0b,我甚至无法编译Perl。我尝试了几个版本并查看了the documentation Perl provides online。据我所知,它建议版本为5.12.2。

当我尝试编译版本5.12.2时,

我从文档中提取以下内容,并填写一些本地系统变量,例如使用XLC rv7。

 export OBJECT_MODE=64

 ./Configure \
  -d \
  -Dcc=/usr/vac/bin/xlc_r7 \
  -Duseshrplib \
  -Duse64bitall \
  -Dprefix=`pwd`/../PERL

然后我尝试按照提示进行操作,并收到以下错误:

        /usr/vac/bin/xlc_r7 -q64 -o miniperl -brtl -bdynamic -L/usr/local/lib -b64    gv.o toke.o perly.o pad.o regcomp.o dump.o util.o mg.o reentr.o mro.o hv.o av.o run.o pp_hot.o sv.o pp.o scope.o pp_ctl.o pp_sys.o doop.o doio.o regexec.o utf8.o taint.o deb.o universal.o globals.o perlio.o perlapi.o numeric.o mathoms.o locale.o pp_pack.o pp_sort.o    miniperlmain.o opmini.o perlmini.o -lbind -lnsl -ldl -lld -lm -lcrypt -lc
        LIBPATH=.../perl-5.12.2  ./miniperl -w -Ilib -MExporter -e '<?>' || make minitest
        LIBPATH=.../perl-5.12.2  ./miniperl -Ilib autodoc.pl
        /usr/bin/ln -s perl5122delta.pod pod/perldelta.pod
        LIBPATH=.../perl-5.12.2  ./miniperl -Ilib -Icpan/Cwd -Icpan/Cwd/lib pod/perlmodlib.PL -q
readdir(./../../../../..): Bad file number at lib/FindBin.pm line 116
stat(/pod/): No such file or directory at lib/FindBin.pm line 197
stat(/pod/): No such file or directory at lib/FindBin.pm line 200
Use of chdir('') or chdir(undef) as chdir() is deprecated at pod/perlmodlib.PL line 9.
No such file or directory at pod/perlmodlib.PL line 19.
make: The error code from the last command is 2.

看一下pod / perlmodlib.PL,我们看到以下内容:

# MANIFEST itself is Unix style filenames, so we have to assume that Unix style
# filenames will work.

open (MANIFEST, "../MANIFEST") or die $!;

在我的绝望中,我试图破解它并避免写入清单,但后来我得到了这个问题:

Creating Makefile.PL in cpan/Archive-Extract for Archive::Extract

Running Makefile.PL in cpan/Archive-Extract
../../miniperl Makefile.PL INSTALLDIRS=perl INSTALLMAN1DIR=none INSTALLMAN3DIR=none PERL_CORE=1 LIBPERL_A=libperl.a
readdir(./../../../../../../..): No such file or directory at ../../lib/File/Find.pm line 610
Use of chdir('') or chdir(undef) as chdir() is deprecated at ../../lib/File/Find.pm line 773.
readdir(./../../..): No such file or directory at ../../cpan/Cwd/lib/File/Spec/Unix.pm line 483
Could not open 'lib/Archive/Extract.pm': No such file or directory at ../../cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm line 2588.
512 from cpan/Archive-Extract's Makefile.PL at make_ext.pl line 390.
Warning: No Makefile!
make: Cannot find a rule to create target config from dependencies.
Stop.
 make config PERL_CORE=1 LIBPERL_A=libperl.a failed, continuing anyway...
Making all in cpan/Archive-Extract
 make all PERL_CORE=1 LIBPERL_A=libperl.a
make: Cannot find a rule to create target all from dependencies.
Stop.
Unsuccessful make(cpan/Archive-Extract): code=512 at make_ext.pl line 449.
make: The error code from the last command is 2.

错误的频率让我觉得我可能没有正确的配置......

我的下一个想法是尝试最新版本,在撰写本文时为5.24。使用相同的配置并尝试使我遇到以下问题:

Can't locate strict.pm in @INC (you may need to install the strict module) (@INC contains: /cpan/AutoLoader/lib /dist/Carp/lib /dist/PathTools /dist/PathTools/lib /cpan/ExtUtils-Install/lib /cpan/ExtUtils-MakeMaker/lib /cpan/ExtUtils-Manifest/lib /cpan/File-Path/lib /ext/re /dist/Term-ReadLine/lib /dist/Exporter/lib /ext/File-Find/lib /cpan/Text-Tabs/lib /dist/constant/lib /cpan/version/lib /lib .) at autodoc.pl line 25.
BEGIN failed--compilation aborted at autodoc.pl line 25.
make: The error code from the last command is 2.

我从其他汇编中了解到,我需要编辑PERL5LIB变量。

如果我继续将所有模块添加到路径中:

export PERL5LIB=`pwd`/dist/Exporter/lib:$PERL5LIB
export PERL5LIB=`pwd`/cpan/Text-Tabs/lib:$PERL5LIB
export PERL5LIB=`pwd`/ext/re:$PERL5LIB
export PERL5LIB=`pwd`/dist/constant/lib:$PERL5LIB
export PERL5LIB=`pwd`/cpan/ExtUtils-MakeMaker/lib:$PERL5LIB
export PERL5LIB=`pwd`/dist/Carp/lib:$PERL5LIB
export PERL5LIB=`pwd`/cpan/File-Path/lib:$PERL5LIB
export PERL5LIB=`pwd`/dist/PathTools:$PERL5LIB
export PERL5LIB=`pwd`/dist/PathTools/lib:$PERL5LIB
export PERL5LIB=`pwd`/ext/File-Find/lib:$PERL5LIB

即便如此,我仍然会在5.24.0源代码中出现一个甚至不存在的模块的错误!

Can't locate ExtUtils/MakeMaker/version/vpp.pm in @INC (you may need to install the ExtUtils::MakeMaker::version::vpp module) (@INC contains: <removed from post>) at (eval 2) line 2.
BEGIN failed--compilation aborted at (eval 2) line 2.
Compilation failed in require at .../perl-5.24.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm line 10.
BEGIN failed--compilation aborted at .../perl-5.24.0/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm line 10.
Compilation failed in require at Makefile.PL line 7.
BEGIN failed--compilation aborted at Makefile.PL line 7.
Unsuccessful Makefile.PL(cpan/Archive-Tar): code=512 at make_ext.pl line 517.
make: The error code from the last command is 2.

我有MakeMaker,但5.24版本不包含vpp.pm!再次,在绝望中我试图从不同的来源把它放在那里,我得到这个错误:

        LIBPATH=.../perl-5.24.0 ./miniperl -Ilib make_ext.pl cpan/Archive-Tar/pm_to_blib  MAKE="make" LIBPERL_A=libperl.a
readdir(./../../../../../../..): No such file or directory at .../perl-5.24.0/ext/File-Find/lib/File/Find.pm line 142.
Can't cd to : No such file or directory
Unsuccessful Makefile.PL(cpan/Archive-Tar): code=512 at make_ext.pl line 517.
make: The error code from the last command is 2.

所有这些让我觉得我可能没有正确配置...有经验的任何人都可以帮我在AIX上为Perl提供一些简洁的干燥安装说明吗?我非常感激。谢谢!

以下是有关我系统的一些信息:

> prtconf
System Model: IBM,8231-E1D
Machine Serial Number: Not Available
Processor Type: Not Available
Processor Implementation Mode: POWER 7
Processor Version: PV_7_Compat
Number Of Processors: 0
Processor Clock Speed: Not Available
CPU Type: 64-bit
Kernel Type: 64-bit
Memory Size: 10240 MB
Good Memory Size: Not Available
Platform Firmware level: Not Available
Firmware Version: IBM,AL770_092
Console Login: disable
Auto Restart: true
Full Core: false

1 个答案:

答案 0 :(得分:0)

我下拉并经常编译openssh和openssl。我使用gcc并没有我能记得的真正魔法。

这是我构建它的脚本。我不知道哪个perl是AIX原生的,但它似乎对我有用。

https://github.com/pedz/aix-build-scripts/blob/master/build-scripts/build-openssl