MacOSX 10.8 y módulos perl de 32 bits

1

Acabo de actualizar de MacOSX 10.6 a 10.8. Muchos de mis proyectos dependen de Mac :: Glue, Mac :: Carbon y su tipo. Aunque Mac :: Glue viene incluido con MacOSX 10.8 perl, no parece funcionar:

[kw|~] perl -ce 'use Mac::Glue'
Can't load '/System/Library/Perl/Extras/5.12/darwin-thread-multi-2level/auto/MacPerl/MacPerl.bundle' for module MacPerl: dlopen(/System/Library/Perl/Extras/5.12/darwin-thread-multi-2level/auto/MacPerl/MacPerl.bundle, 1): no suitable image found.  Did find:
    /System/Library/Perl/Extras/5.12/darwin-thread-multi-2level/auto/MacPerl/MacPerl.bundle: mach-o, but wrong architecture at /System/Library/Perl/5.12/darwin-thread-multi-2level/DynaLoader.pm line 204.
 at /System/Library/Perl/Extras/5.12/Mac/Glue/Common.pm line 21
Compilation failed in require at /System/Library/Perl/Extras/5.12/Mac/Glue/Common.pm line 21.
BEGIN failed--compilation aborted at /System/Library/Perl/Extras/5.12/Mac/Glue/Common.pm line 21.
Compilation failed in require at /System/Library/Perl/Extras/5.12/Mac/Glue.pm line 7.
BEGIN failed--compilation aborted at /System/Library/Perl/Extras/5.12/Mac/Glue.pm line 7.
Compilation failed in require at -e line 1.
BEGIN failed--compilation aborted at -e line 1.

Mac :: Glue es de 32 bits:

[kw|~] lipo -info /System/Library/Perl/Extras/5.12/darwin-thread-multi-2level/auto/MacPerl/MacPerl.bundle
Non-fat file: /System/Library/Perl/Extras/5.12/darwin-thread-multi-2level/auto/MacPerl/MacPerl.bundle is architecture: i386

/ usr / bin / perl afirma ser compatible con esa arquitectura:

[kw|~] file /usr/bin/perl
/usr/bin/perl: Mach-O universal binary with 2 architectures
/usr/bin/perl (for architecture i386):  Mach-O executable i386
/usr/bin/perl (for architecture x86_64):    Mach-O 64-bit executable x86_64

Estoy ejecutando MacOSX 10.8.2, Perl 5.12.4.

¿Alguien tiene alguna idea de cómo solucionar este problema? Si MacOSX es de 64 bits, ¿eso evita que perl sea compatible con módulos de 32 bits, a pesar de su afirmación de ser compatible con dos arquitecturas?

    
pregunta Kevin Walker 23.02.2013 - 02:01

2 respuestas

1

Encontré una solución al problema: use el comando 'arch' de MacOSX para forzar a perl a ejecutarse como de 32 bits. (Vea también enlace .)

[kw|~] arch -32 perl5.12 -ce 'use Mac::Glue'
-e syntax OK

Tenga en cuenta que se necesita el "perl5.12" explícito y no simplemente "perl", ya que (en MacOSX 10.8) / usr / bin / perl es un script de shell que delega a /usr/bin/perl5.12 o /usr/bin/perl5.10.

    
respondido por el Kevin Walker 24.02.2013 - 02:00
1

En realidad, hay otras dos formas de hacerlo, si nos referimos a man perlmacosx :

  1. Utilice "valores predeterminados":

    % defaults write com.apple.versioner.perl Prefer-32-Bit -bool yes 
    
  2. Use la variable de entorno VERSIONER_PERL_PREFER_32_BIT establecida en "true", "yes" o 1

Con cualquiera de los dos, perl -ce 'use Mac::Glue' obtiene: -e syntax OK

    
respondido por el Benjamin 19.10.2013 - 14:49

Lea otras preguntas en las etiquetas