Что здесь происходит с моим недавно скомпилированным Perl? - PullRequest
2 голосов
/ 16 июля 2011

Я скомпилировал Perl с перемещаемым @INC следующим образом:

$ sh Configure -des -D prefix=~/perl -Duserelocatableinc

После того, как я настроил свой путь и т.д., я получаю следующее:

$ perl -e 'use strict; print "ok"'
Can't locate strict.pm in @INC (@INC contains: ../lib/site_perl/5.12.4/darwin-2level ../lib/site_perl/5.12.4 ../lib/5.12.4/darwin-2level ../lib/5.12.4 .) at -e line 1.
BEGIN failed--compilation aborted at -e line 1.

Если я это сделаю, все ли все в порядке?

$ `which perl` -e 'use strict; print "ok"'

Я сделал что-то не так? Это на OS X.

Вот вывод для perl -V:

$ perl -V
Can't locate Config.pm in @INC (@INC contains:     ../lib/site_perl/5.12.4/darwin-2level ../lib/site_perl/5.12.4     ../lib/5.12.4/darwin-2level ../lib/5.12.4 .).
BEGIN failed--compilation aborted.

$ `which perl` -V
Summary of my perl5 (revision 5 version 12 subversion 4) configuration:

  Platform:
    osname=darwin, osvers=10.8.0, archname=darwin-2level
    uname='darwin fenchurch-2.local 10.8.0 darwin kernel version 10.8.0: tue     jun 7 16:33:36 pdt 2011; root:xnu-1504.15.3~1release_i386 i386 '
    config_args='-des -D prefix=/Users/kd/perl -Duserelocatableinc'
    hint=recommended, useposix=true, d_sigaction=define
    useithreads=undef, usemultiplicity=undef
    useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
    use64bitint=define, use64bitall=define, uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
  Compiler:
    cc='cc', ccflags ='-fno-common -DPERL_DARWIN -no-cpp-precomp     -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include     -I/opt/local/include',
    optimize='-O3',
    cppflags='-no-cpp-precomp -fno-common -DPERL_DARWIN -no-cpp-precomp     -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include     -I/opt/local/include'
    ccversion='', gccversion='4.2.1 (Apple Inc. build 5666) (dot 3)',     gccosandvers=''
    intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
    ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t',     lseeksize=8
    alignbytes=8, prototype=define
  Linker and Libraries:
    ld='env MACOSX_DEPLOYMENT_TARGET=10.3 cc', ldflags =' -fstack-protector     -L/usr/local/lib -L/opt/local/lib'
    libpth=/usr/local/lib /opt/local/lib /usr/lib
    libs=-lgdbm -ldbm -ldl -lm -lutil -lc
    perllibs=-ldl -lm -lutil -lc
    libc=/usr/lib/libc.dylib, so=dylib, useshrplib=false, libperl=libperl.a
    gnulibc_version=''
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=bundle, d_dlsymun=undef, ccdlflags=' '
    cccdlflags=' ', lddlflags=' -bundle -undefined dynamic_lookup     -L/usr/local/lib -L/opt/local/lib -fstack-protector'


Characteristics of this binary (from libperl): 
  Compile-time options: PERL_DONT_CREATE_GVSV PERL_MALLOC_WRAP USE_64_BIT_ALL
                        USE_64_BIT_INT USE_LARGE_FILES USE_PERLIO
                        USE_PERL_ATOF
  Built under darwin
  Compiled at Jul 16 2011 15:44:19
  %ENV:
    PERL_MM_USE_DEFAULT="1"
  @INC:
    /Users/kd/perl/lib/site_perl/5.12.4/darwin-2level
    /Users/kd/perl/lib/site_perl/5.12.4
    /Users/kd/perl/lib/5.12.4/darwin-2level
    /Users/kd/perl/lib/5.12.4
    .

Ответы [ 3 ]

1 голос
/ 17 июля 2011

ОК, найдено сообщение об ошибке:

http://www.nntp.perl.org/group/perl.perl5.porters/2011/03/msg169818.html

0 голосов
/ 28 ноября 2011

Я не могу представить сценарий, в котором вы бы предпочли предварительно скомпилировать интерпретатор Perl с новым путем @INC, чем просто установить его в среду или установить в самом скрипте Perl.

Компиляция нового пути lib в Perl кажется чрезмерной и хрупкой.

Я думаю, вам гораздо лучше передать его в качестве аргумента:

PERL5LIB="/my/new/path":$PERL5LIB /path/to/my/script.pl

или внутрисам скрипт, так как вы уже знаете требуемый путь:

push(@INC, "/my/new/path");
0 голосов
/ 16 июля 2011

Ты что-нибудь получаешь за perl -V?Использование заглавной буквы V показывает версию и параметры компиляции, включая каталоги @INC.Убедитесь, что в этих каталогах находятся модули.

Также обратите внимание, что в prefix вы назначаете каталог для установки, поэтому perl должно быть в ~ / perl / bin / perl .Это тот самый perl, который вы используете?Я бы не ожидал, что which обнаружит это, если вы уже не настроили PATH.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...