Perl .bundle files



在我的OSX机器上,在Lib目录的丛林深处,我能够看到此

-r-xr-xr-x 1 user users 45700 Feb 01 1:47 LibXSLT.bundle*

1)这些.bundle文件是什么?

2)谁创造了它们?CPAN模块?

3)如果是这样,我们可以通过一些Makefile伪影控制它的生成?

  1. 这些.bundle文件是什么?

在这种情况下,*.bundle文件是Mach-O通用二进制文件。

file可用于检查包括架构的文件类型。

file …/Perl/…/XML/LibXSLT/LibXSLT.bundle
# /LibXSLT.bundle: Mach-O universal binary with 2 architectures: 
#    [x86_64:Mach-O 64-bit bundle x86_64] 
#    [arm64e:Mach-O 64-bit bundle arm64e]
  1. 谁创造了它们?CPAN模块?

lipo是将一个或多个架构特定可执行文件组合到 mach-o通用二进制中的工具。(通常,尽管Perl可能需要扩展名,但.bundle文件扩展名是可选的。)

which -a lipo
# /usr/bin/lipo
man lipo
# NAME
#        lipo - create or operate on universal files
  1. 如果是这样,那么我们可以通过某些Makefile伪像来控制其一代吗?

Apple文章"构建通用Macos二进制"提及如何使用(C/C /Swift)makefile通过将结果可执行文件与lipo工具合并来创建通用二进制。

下面的示例显示了一个Makefile,该makefile两次编译单源文件 - 每种架构的一开始。然后,它通过将结果可执行文件与lipo工具合并来创建通用二进制。

x86_app: main.c
    $(CC) main.c -o x86_app -target x86_64-apple-macos10.12
arm_app: main.c
    $(CC) main.c -o arm_app -target arm64-apple-macos11
universal_app: x86_app arm_app
    lipo -create -output universal_app x86_app arm_app

从概念上讲,上述方法可以与ExtUtils::MakeMaker Makefile.PL

一起使用

相关内容

  • 没有找到相关文章

最新更新