Как нам создать 32-битную сборку Perl 5.12.3 в / usr / local на Mac OS X Snow Leopard? - PullRequest
1 голос
/ 30 марта 2011

По той или иной причине нам нужно создать собственную 32-битную сборку Perl 5.12.3 в / usr / local на Mac OS X Snow Leopard.

Может кто-нибудь объяснить процесс или указать нам:направление учебника или пример?

Ответы [ 3 ]

1 голос
/ 30 марта 2011

На Snowleopard ядро ​​работает в 32-битном режиме, а пользовательский интерфейс в основном в 64-битном режиме. Ядро может без проблем запускать 32-битные и 64-битные пользовательские приложения. Вы должны указать системе сборки Perl создать 32-битный только двоичный файл. Это делается путем установки флага -arch gcc.

Для простого приложения с одним файлом вы можете сделать это так:

gcc -arch i386 -o app app.m -lobjc -framework CoreFoundation -framework Cocoa

В вашем случае вы должны передать флаг arch системе сборки. Я не эксперт по Perl, но я бы настроил Perl так:

./Configure -Dprefix=/usr/local -A ccflags="-arch i386"
0 голосов
/ 26 июля 2012

Вот как я это сделал, используя Perlbrew:

  1. Установка Perlbrew
  2. Убедитесь, что вы выполнили все необходимые шаги, включая добавление бита в конец .bash_profile.
  3. Запустите следующее (для perl 5.14.2, с многопоточностью. Настройте при необходимости для других версий и опций perl) (Благодаря WildPerl за этот бит мудрости):

    perlbrew install 5.14.2 -ders -Dusethreads -Duseithreads -Accflags = "- arch i386" -Accflags = "- B / Developer / SDKs / MacOSX10.6.sdk / usr / include / gcc" -Accflags = "- B / Developer / SDKs / MacOSX10.6.sdk / usr / lib / gcc "-Accflags =" - isystem / Developer / SDKs / MacOSX10.6.sdk / usr / include "-Accflags =" - F / Developer / SDKs / MacOSX10.6.sdk / System / Library / Frameworks "-Accflags =" - mmacosx-version-min = 10.5 "-Aldflags =" - arch i386 -Wl, -search_paths_first "-Aldflags =" - Wl, -syslibroot, / Developer /SDKs/MacOSX10.6.sdk "-Aldflags =" - mmacosx-version-min = 10.5 "-Alddlflags =" - arch i386 -Wl, -search_paths_first "-Alddlflags =" - Wl, -syslibroot, / Developer / SDKs / MacOSX10.6.sdk "-Alddlflags =" - mmacosx-version-min = 10,5 "-Duseshrplib

  4. Если у вас есть более новая версия XCode с SDK разработчика в составе пакета приложения, вам необходимо создать символическую ссылку на них из / Developer:

    sudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/ / Developer

  5. Установить локальную копию cpanm:

    perlbrew install-cpanm

  6. После того, как это закончится, перейдите к месту, где perlbrew установил perl (в моей системе это: ~/perl5/perlbrew/perls/perl-5.14.2/lib/5.14.2/darwin-thread-multi-2level/ и отредактируйте Config.pm, чтобы изменить эту строку:

    cc => 'cc',

на это:

cc => 'cc -m32',
0 голосов
/ 30 марта 2011

Если в вашей системе не включены 64-битные расширения ядра, вы можете просто собрать Perl прямо из исходного кода и передать DESTDIR = / usr / local в командной строке make install.Если система работает в 64-битном режиме, вам нужно будет найти способ кросс-компиляции для i386, чего раньше мне не приходилось делать, поскольку я просто собирал perl для своей нативной архитектуры или устанавливал из пакета.

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