Moduli perl MacOSX 10.8 e 32-bit

1

Ho appena aggiornato da MacOSX 10.6 a 10.8. Molti dei miei progetti dipendono da Mac :: Glue, Mac :: Carbon e dai loro simili. Anche se Mac :: Glue viene fornito in bundle con MacOSX 10.8 perl, non sembra funzionare:

[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 è a 32 bit:

[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 afferma di essere compatibile con tale architettura:

[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

Utilizzo MacOSX 10.8.2, perl 5.12.4.

Qualcuno ha qualche idea su come risolvere questo problema? Se MacOSX è a 64 bit, impedisce a perl di essere compatibile con i moduli a 32 bit, nonostante si dichiari di essere compatibile con due architetture?

    
posta Kevin Walker 23.02.2013 - 02:01
fonte

2 risposte

1

Ho trovato una soluzione al problema: usa il comando 'arch' di MacOSX per forzare il perl a funzionare come 32-bit. (Vedi anche link .)

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

Si noti che è necessario l'esplicito "perl5.12" e non semplicemente "perl", poiché (su MacOSX 10.8) / usr / bin / perl è uno script di shell che delega a /usr/bin/perl5.12 o /usr/bin/perl5.10.

    
risposta data 24.02.2013 - 02:00
fonte
1

In realtà, ci sono altri due modi per farlo, se ci riferiamo a man perlmacosx :

  1. Utilizza "valori predefiniti":

    % defaults write com.apple.versioner.perl Prefer-32-Bit -bool yes 
    
  2. Utilizza la variabile di ambiente VERSIONER_PERL_PREFER_32_BIT impostata su "true", "yes" o 1

Con uno dei due, perl -ce 'use Mac::Glue' ti prende: -e syntax OK

    
risposta data 19.10.2013 - 14:49
fonte

Leggi altre domande sui tag