安装模块时“无效访问内存位置”

时间:2013-03-14 20:32:43

标签: r perl mingw perl-module cpan

Perl的新手。我已经设法通过命令提示符在我的Windows 7 PC上安装了一些来自CPAN的模块,但是在安装Math :: Random时我遇到了困难。不知道这里发生了什么。我已经尝试谷歌搜索几个小时来利用。这就是我得到的......

    cpan> install Math::Random
    Database was generated on Thu, 14 Mar 2013 15:15:50 GMT
    Running install for module 'Math::Random'
    Running make for G/GR/GROMMEL/Math-Random-0.71.tar.gz
    Fetching with LWP:
    http://cpan.strawberryperl.com/authors/id/G/GR/GROMMEL/Math-Random-0.71.tar.gz
    Checksum for C:\strawberry\cpan\sources\authors\id\G\GR\GROMMEL\Math-Random-0.71
    .tar.gz ok
    Scanning cache C:\strawberry\cpan\build for sizes
    ............................................................................DONE

    Invalid header block at offset unknown at C:\strawberry\perl\lib/CPAN/Tarzip.pm
    line 365.
    Invalid header block at offset unknown at C:\strawberry\perl\lib/CPAN/Tarzip.pm
    line 365.
    Invalid header block at offset unknown at C:\strawberry\perl\lib/CPAN/Tarzip.pm
    line 365.
    Invalid header block at offset unknown at C:\strawberry\perl\lib/CPAN/Tarzip.pm
    line 365.
    Invalid header block at offset unknown at C:\strawberry\perl\lib/CPAN/Tarzip.pm
    line 365.
    Invalid header block at offset unknown at C:\strawberry\perl\lib/CPAN/Tarzip.pm
    line 365.
    Invalid header block at offset unknown at C:\strawberry\perl\lib/CPAN/Tarzip.pm
    line 365.
    Invalid header block at offset unknown at C:\strawberry\perl\lib/CPAN/Tarzip.pm
    line 365.

      CPAN.pm: Building G/GR/GROMMEL/Math-Random-0.71.tar.gz

    Checking if your kit is complete...
    Looks good
    Writing Makefile for Math::Random
    Writing MYMETA.yml and MYMETA.json
    cp test2.pl blib\lib\Math\test2.pl
    cp Random.pm blib\lib\Math\Random.pm
    AutoSplitting blib\lib\Math\Random.pm (blib\lib\auto\Math\Random)
    cp test1.pl blib\lib\Math\test1.pl
    cp example.pl blib\lib\Math\example.pl
    C:\strawberry\perl\bin\perl.exe C:\strawberry\perl\lib\ExtUtils\xsubpp  -typemap
     C:\strawberry\perl\lib\ExtUtils\typemap  Random.xs > Random.xsc && C:\strawberr
    y\perl\bin\perl.exe -MExtUtils::Command -e mv -- Random.xsc Random.c
    gcc -c          -s -O2 -DWIN32 -DPERL_TEXTMODE_SCRIPTS -DPERL_IMPLICIT_CONTEXT -
    DPERL_IMPLICIT_SYS -fno-strict-aliasing -mms-bitfields -s -O2     -DVERSION=\"0.
    71\"    -DXS_VERSION=\"0.71\"  "-IC:\strawberry\perl\lib\CORE"   Random.c
    gcc -c          -s -O2 -DWIN32 -DPERL_TEXTMODE_SCRIPTS -DPERL_IMPLICIT_CONTEXT -
    DPERL_IMPLICIT_SYS -fno-strict-aliasing -mms-bitfields -s -O2     -DVERSION=\"0.
    71\"    -DXS_VERSION=\"0.71\"  "-IC:\strawberry\perl\lib\CORE"   com.c
    gcc -c          -s -O2 -DWIN32 -DPERL_TEXTMODE_SCRIPTS -DPERL_IMPLICIT_CONTEXT -
    DPERL_IMPLICIT_SYS -fno-strict-aliasing -mms-bitfields -s -O2     -DVERSION=\"0.
    71\"    -DXS_VERSION=\"0.71\"  "-IC:\strawberry\perl\lib\CORE"   helper.c
    gcc -c          -s -O2 -DWIN32 -DPERL_TEXTMODE_SCRIPTS -DPERL_IMPLICIT_CONTEXT -
    DPERL_IMPLICIT_SYS -fno-strict-aliasing -mms-bitfields -s -O2     -DVERSION=\"0.
    71\"    -DXS_VERSION=\"0.71\"  "-IC:\strawberry\perl\lib\CORE"   linpack.c
    gcc -c          -s -O2 -DWIN32 -DPERL_TEXTMODE_SCRIPTS -DPERL_IMPLICIT_CONTEXT -
    DPERL_IMPLICIT_SYS -fno-strict-aliasing -mms-bitfields -s -O2     -DVERSION=\"0.
    71\"    -DXS_VERSION=\"0.71\"  "-IC:\strawberry\perl\lib\CORE"   randlib.c
    Running Mkbootstrap for Math::Random ()
    C:\strawberry\perl\bin\perl.exe -MExtUtils::Command -e chmod -- 644 Random.bs
    C:\strawberry\perl\bin\perl.exe -MExtUtils::Mksymlists \
         -e "Mksymlists('NAME'=>\"Math::Random\", 'DLBASE' => 'Random', 'DL_FUNCS' =
    > {  }, 'FUNCLIST' => [], 'IMPORTS' => {  }, 'DL_VARS' => []);"
    dlltool --def Random.def --output-exp dll.exp
    g++ -o blib\arch\auto\Math\Random\Random.dll -Wl,--base-file -Wl,dll.base -mdll
    -s -L"C:\strawberry\perl\lib\CORE" -L"C:\strawberry\c\lib" Random.o     com.o
    helper.o        linpack.o       randlib.o   C:\strawberry\perl\lib\CORE\libperl5
    16.a C:\strawberry\c\i686-w64-mingw32\lib\libm.a C:\strawberry\c\i686-w64-mingw3
    2\lib\libmoldname.a C:\strawberry\c\i686-w64-mingw32\lib\libkernel32.a C:\strawb
    erry\c\i686-w64-mingw32\lib\libuser32.a C:\strawberry\c\i686-w64-mingw32\lib\lib
    gdi32.a C:\strawberry\c\i686-w64-mingw32\lib\libwinspool.a C:\strawberry\c\i686-
    w64-mingw32\lib\libcomdlg32.a C:\strawberry\c\i686-w64-mingw32\lib\libadvapi32.a
     C:\strawberry\c\i686-w64-mingw32\lib\libshell32.a C:\strawberry\c\i686-w64-ming
    w32\lib\libole32.a C:\strawberry\c\i686-w64-mingw32\lib\liboleaut32.a C:\strawbe
    rry\c\i686-w64-mingw32\lib\libnetapi32.a C:\strawberry\c\i686-w64-mingw32\lib\li
    buuid.a C:\strawberry\c\i686-w64-mingw32\lib\libws2_32.a C:\strawberry\c\i686-w6
    4-mingw32\lib\libmpr.a C:\strawberry\c\i686-w64-mingw32\lib\libwinmm.a C:\strawb
    erry\c\i686-w64-mingw32\lib\libversion.a C:\strawberry\c\i686-w64-mingw32\lib\li
    bodbc32.a C:\strawberry\c\i686-w64-mingw32\lib\libodbccp32.a C:\strawberry\c\i68
    6-w64-mingw32\lib\libcomctl32.a dll.exp
    dlltool --def Random.def --base-file dll.base --output-exp dll.exp
    g++ -o blib\arch\auto\Math\Random\Random.dll -mdll -s -L"C:\strawberry\perl\lib\
    CORE" -L"C:\strawberry\c\lib" Random.o  com.o   helper.o        linpack.o
    randlib.o   C:\strawberry\perl\lib\CORE\libperl516.a C:\strawberry\c\i686-w64-mi
    ngw32\lib\libm.a C:\strawberry\c\i686-w64-mingw32\lib\libmoldname.a C:\strawberr
    y\c\i686-w64-mingw32\lib\libkernel32.a C:\strawberry\c\i686-w64-mingw32\lib\libu
    ser32.a C:\strawberry\c\i686-w64-mingw32\lib\libgdi32.a C:\strawberry\c\i686-w64
    -mingw32\lib\libwinspool.a C:\strawberry\c\i686-w64-mingw32\lib\libcomdlg32.a C:
    \strawberry\c\i686-w64-mingw32\lib\libadvapi32.a C:\strawberry\c\i686-w64-mingw3
    2\lib\libshell32.a C:\strawberry\c\i686-w64-mingw32\lib\libole32.a C:\strawberry
    \c\i686-w64-mingw32\lib\liboleaut32.a C:\strawberry\c\i686-w64-mingw32\lib\libne
    tapi32.a C:\strawberry\c\i686-w64-mingw32\lib\libuuid.a C:\strawberry\c\i686-w64
    -mingw32\lib\libws2_32.a C:\strawberry\c\i686-w64-mingw32\lib\libmpr.a C:\strawb
    erry\c\i686-w64-mingw32\lib\libwinmm.a C:\strawberry\c\i686-w64-mingw32\lib\libv
    ersion.a C:\strawberry\c\i686-w64-mingw32\lib\libodbc32.a C:\strawberry\c\i686-w
    64-mingw32\lib\libodbccp32.a C:\strawberry\c\i686-w64-mingw32\lib\libcomctl32.a
    dll.exp
    C:\strawberry\perl\bin\perl.exe -MExtUtils::Command -e chmod -- 755 blib\arch\au
    to\Math\Random\Random.dll
    C:\strawberry\perl\bin\perl.exe -MExtUtils::Command -e cp -- Random.bs blib\arch
    \auto\Math\Random\Random.bs
    C:\strawberry\perl\bin\perl.exe -MExtUtils::Command -e chmod -- 644 blib\arch\au
    to\Math\Random\Random.bs
      GROMMEL/Math-Random-0.71.tar.gz
      C:\strawberry\c\bin\dmake.exe -- OK
    Running make test
    C:\strawberry\perl\bin\perl.exe "-Iblib\lib" "-Iblib\arch" test.pl
    1..16
    Can't load 'blib\arch/auto/Math/Random/Random.dll' for module Math::Random: load
    _file:Invalid access to memory location at C:/strawberry/perl/lib/DynaLoader.pm
    line 190.
     at test.pl line 9.
    Compilation failed in require at test.pl line 9.
    BEGIN failed--compilation aborted at test.pl line 9.
    dmake.exe:  Error code 130, while making 'test_dynamic'
      GROMMEL/Math-Random-0.71.tar.gz
      C:\strawberry\c\bin\dmake.exe test -- NOT OK
    //hint// to see the cpan-testers results for installing this module, try:
      reports GROMMEL/Math-Random-0.71.tar.gz
    Running make install
      make test had returned bad status, won't install without force
    Stopping: 'install' failed for 'Math::Random'.
    Failed during this command:
     GROMMEL/Math-Random-0.71.tar.gz              : make_test NO

1 个答案:

答案 0 :(得分:1)

我现在已经解决了这个问题。我删除了Rtools(帮助开发R软件包的软件)并编辑了Path变量以便松散..

C:\Rtools\bin;
C:\Rtools\perl\bin;
C:\Rtools\gcc-4.6.3\bin;
C:\Rtools\MinGW\bin;

然后我卸载并重新安装了草莓perl(我之前尝试过最后一步,没有运气)。我怀疑在阅读@summea链接后,路径中的MinGW可能是问题的原因,并且@ikegami编辑添加标记