【问题标题】:How do we create a 32-bit build of Perl 5.12.3 in /usr/local on Mac OS X Snow Leopard?我们如何在 Mac OS X Snow Leopard 上的 /usr/local 中创建 Perl 5.12.3 的 32 位版本?
【发布时间】:2011-03-30 12:48:58
【问题描述】:

出于某种原因,我们需要在 Mac OS X Snow Leopard 上的 /usr/local 中创建自定义的 32 位 Perl 5.12.3 构建。

任何人都可以解释这个过程或向我们指出教程或示例的方向吗?

【问题讨论】:

  • 当你Configure你的perl构建时,有一个步骤会询问:Any additional cc flags?如果你添加-m32你将只构建一个32位的目标代码。您还需要指定一些其他链接器标志,我刚才错过了,但我想这是一个起点。

标签: perl macos build


【解决方案1】:

在 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"

【讨论】:

    【解决方案2】:

    如果您的系统没有打开 64 位内核扩展,那么您应该能够直接从源代码构建 Perl 并在 make install 命令行上传递 DESTDIR=/usr/local。如果系统处于 64 位模式,您需要查找如何为 i386 进行交叉编译,这不是我以前必须做的事情,因为我只是为我的本机架构构建 perl,或者从包中安装.

    【讨论】:

    • 我不确定这是否足够。我启动了一个 32 位内核,而我本地构建的 perl 是 64 位的。
    【解决方案3】:

    这是我使用 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,并将 Developer 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',
    

    【讨论】:

      猜你喜欢
      • 2012-10-17
      • 2011-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-15
      • 1970-01-01
      • 2011-10-26
      • 2010-12-03
      相关资源
      最近更新 更多