【问题标题】:Why do I get "XCOFF32 object files are not allowed in 64-bit mode" when I try to install Digest::SHA?当我尝试安装 Digest::SHA 时,为什么会得到“XCOFF32 目标文件在 64 位模式下是不允许的”?
【发布时间】:2016-05-10 03:37:29
【问题描述】:

我正在尝试安装Digest::SHA v5.95,但出现以下错误:

64 位模式下不允许使用 XCOFF32 目标文件

我使用的是 UNIX AIX 版本 7.1 和 64 位 perl 5.22.0。 perl -V 给:

Platform:
osname=aix, osvers=7.1.0.0, archname=aix
uname='aix 1 7 00f64d144c00 '
config_args='-des -Dprefix=/home/snemmal/perl'
hint=recommended, useposix=true, d_sigaction=define
useithreads=undef, usemultiplicity=undef
use64bitint=undef, use64bitall=undef, uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='cc -q32', ccflags ='-D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -        qmaxmem=-1 -qnoansialias -qlanglvl=extc99 -DUSE_NATIVE_DLOPEN -q32 -D_LARGE_FILES',
optimize='-O',
cppflags='-D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -qmaxmem=-1 -qnoansialias -qlanglvl=extc99 -DUSE_NATIVE_DLOPEN'
ccversion='9.0.0.19', gccversion='', gccosandvers=''
intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=4321, doublekind=4
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=8, longdblkind=0
ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
alignbytes=8, prototype=define
Linker and Libraries:
ld='ld', ldflags =' -brtl -bdynamic -b32 -bmaxdata:0x80000000'
libpth=/lib /usr/lib /usr/ccs/lib
libs=-lpthread -lbind -lnsl -ldbm -ldl -lld -lm -lcrypt -lc
perllibs=-lpthread -lbind -lnsl -ldl -lld -lm -lcrypt -lc
libc=/lib/libc.a, so=a, useshrplib=false, libperl=libperl.a
gnulibc_version=''
Dynamic Linking:
dlsrc=dl_aix.xs, dlext=so, d_dlsymun=undef, ccdlflags='  -bE:/home/snemmal/perl/lib/5.22.0/aix/CORE/perl.exp'
cccdlflags=' ', lddlflags='  -bhalt:4 -G -bI:$(PERL_INC)/perl.exp -bE:$(BASEEXT).exp -bnoentry -lc -lm '

我尝试过这样构建:

  1. search.cpan.org/~mshelor/Digest-SHA-5.95/lib/Digest/SHA.pm下载并解压.gz文件

  2. perl Makefile.PL(运行成功)

  3. make(失败,“XCOFF32 目标文件不允许在 64 位模式下”)

这是make的完整输出:

跳过 blib/lib/Digest/SHA.pm(未更改)运行 Mkbootstrap for Digest::SHA () chmod 644 "SHA.bs" cc -q32 -c -I。 -D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -qmaxmem=-1 -qnoansialias -qlanglvl=extc99 -DUSE_NATIVE_DLOPEN -q32 -D_LARGE_FILES -O -DVERSION=\"5.95\" -DXS_VERSION=\"5.95\" "-I/home/snemmal/perl /lib/5.22.0/aix/CORE" SHA.c

rm -f blib/arch/auto/Digest/SHA/SHA.sold -bhalt:4 -G -bI:/home/snemmal/perl/lib/5.22.0/aix/CORE/perl.exp - bE:SHA.exp -bnoentry -lc -lm SHA.o -o blib/arch/auto/Digest/SHA/SHA.so ld: 0711-738 错误: 输入文件 SHA.o: XCOFF32 目标文件在 64 中是不允许的位模式。 make: 1254-004 最后一条命令的错误代码是 8. 停止。

看起来模块中的一个目标文件处于 32 位模式,而我的 perl 处于 64 位模式。如何成功安装此模块?

【问题讨论】:

  • CPAN 发行版不包含二进制文件。
  • 你是如何安装模块的?
  • 我已经从 "search.cpan.org/~mshelor/Digest-SHA-5.95/lib/Digest/SHA.pm" untar 下载了 .gz 文件,然后使用命令 1.perl Makefile.PL (成功) 2. make (失败并出现上述错误) 3.make test (还to..) 4. make install (还没有..)
  • 下面是 make 的输出(失败的命令) $ make Skip blib/lib/Digest/SHA.pm(未更改) Running Mkbootstrap for Digest::SHA () chmod 644 "SHA.bs" cc - q32 -c -I。 -D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -qmaxmem=-1 -qnoansialias -qlanglvl=extc99 -DUSE_NATIVE_DLOPEN -q32 -D_LARGE_FILES -O -DVERSION=\"5.95\" -DXS_VERSION=\"5.95\" "-I/home/snemmal/perl /lib/5.22.0/aix/CORE" SHA.c(第 1/2 部分)
  • rm -f blib/arch/auto/Digest/SHA/SHA.so ld -bhalt:4 -G -bI:/home/snemmal/perl/lib/5.22.0/aix/CORE /perl.exp -bE:SHA.exp -bnoentry -lc -lm SHA.o -o blib/arch/auto/Digest/SHA/SHA.so ld:0711-738 错误:输入文件 SHA.o:XCOFF32 目标文件在 64 位模式下是不允许的。 make: 1254-004 最后一条命令的错误代码是 8. 停止。 (第 2/2 部分)

标签: perl unix 32bit-64bit aix


【解决方案1】:

您尝试在 32 位“cc -q32”中编译,尝试使用 -q64 标志编译。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-15
    • 1970-01-01
    • 1970-01-01
    • 2019-11-12
    • 1970-01-01
    • 2017-07-24
    • 2016-04-20
    • 1970-01-01
    相关资源
    最近更新 更多