问题标签 [fat-binaries]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
926 浏览

windows - 将应用程序的 64 位和 32 位版本滚动到同一个二进制文件中?

我们有一个正在尝试在 64 位和 32 位平台上部署的应用程序。有没有办法将代码的两个编译版本放在同一个二进制文件中,比如 Apple 和 NeXT 的胖二进制文件

理想情况下,我们可以发布一个 .exe 来决定执行哪个版本的代码。我们的目标是 Windows XP 及更高版本。

0 投票
3 回答
1241 浏览

macos - 使胖二进制文件更喜欢在 64 位 OS X 10.6 上成为 32 位的正确方法?

假设我问用户“你想在 32 位模式还是 64 位模式下运行”,他们选择了 32 位。我如何在操作系统中注册这个事实?我已经查看了arch命令,但我不想编写一个包装二进制文件的脚本。我怀疑有一种 plist-y 方法可以做到这一点,但我找不到文档(除了拱门)。

0 投票
2 回答
7064 浏览

iphone - 为 armv6 和 armv7 构建包含另一个静态库的 iPhone 静态库

我有一个 Xcode 项目,它有一个“主”静态库目标,它包含/链接到来自其他 Xcode 项目的一堆其他静态库。

在为“Optimized (armv6 armv7)”构建主库目标时,在 CreateUniversalBinary 步骤的最后阶段出现错误。对于主库包含的库的每个.o文件,都会报告以下错误(例如,FBConnectGlobal.o文件):

最后,Xcode 告诉我们构建成功。但是,当在应用程序项目中使用最终的静态库时,它不会构建,因为它在构建的一个部分 (armv6) 中找到重复的符号,而在构建的另一部分 (armv7) 中丢失符号。

任何想法如何解决这一问题?

0 投票
4 回答
34279 浏览

iphone - 我如何为 armv6、armv7 和 i386 编译静态库(fat)

我知道这个问题已被多次提出,但我的目标与我在网上搜索到的内容略有不同。具体来说,我已经能够为 iPhone 构建一个静态库,但是我能够构建的最终 fat 文件只包含 arm 和 i386 架构(我不确定 arm 指的是什么:v6 还是 v7?)。我无法专门为 armv6 和 armv7 编译,它们使用 lipo 合并这两种架构。lipo 工具抱怨 armv6 和 armv7 库中存在相同的架构(arm,而不是 armv6 或 armv7)。

有人可以准确解释如何为 armv6 和 armv7 构建,然后他们使用 lipo 将这些库合并到一个 fat 文件中吗?

编辑:我需要不使用 Xcode 构建,而是直接编译传统的 unix 库。

0 投票
2 回答
416 浏览

iphone - 在 iOS 下,有没有办法在崩溃报告中确定正在执行的架构?

给定 iOS 上的崩溃报告(非符号化),有没有办法确定设备正在执行哪个架构(armv6 或 armv7)?

我为什么要问?我收到了一些与存档的 dSYM/可执行文件无关的崩溃报告。因此,我无法用自动化工具来象征它们。我想尝试将崩溃文件中记录的 UUID 更改为保留 dSYM 的版本(两个版本之间的更改可能只是资源文件更改[图像],因此编译的代码应该相同)。这可能允许我使用自动化工具来符号化报告并提取一些有意义的崩溃数据。

dwarfdump 显示我所拥有的可执行文件和 dSYM 符合预期,但它也显示每个(胖二进制)armv6 和 armv7 中都有两种架构。为了能够快速地将 UUID 替换为崩溃报告,我需要知道崩溃之前设备使用的架构。

0 投票
1 回答
916 浏览

iphone - 在 iOS 下,有谁知道如何为可执行文件生成 UUID 以及其中可能编码哪些信息?

在 iOS 上编译的应用程序在编译时被分配了标识符 (UUID)。dwarfdump 工具可能会显示这些标识符。有谁知道 UUID 是如何生成的以及其中可以编码哪些信息?

0 投票
1 回答
278 浏览

iphone - 在 iOS 下,有没有一种快速的方法来查看我对特定 UUID 有哪些符号?

在 iOS 下,唯一标识符,称为 UUID,在编译时分配。随着时间的推移,开发人员可能会积累许多具有不同标识符的构建。有时快速识别哪些 UUID 保存了与它们关联的符号文件可能很有用。有没有一种快速的方法来识别哪些 UUID 保留了符号?

0 投票
2 回答
2825 浏览

cuda - __cudaRegisterFatBinary 和 __cudaRegisterFunction 函数的参数是什么?

我遇到了两个功能

__cudaRegisterFatBinary()

__cudaRegisterFunction()

我了解 nvcc 将其注入源代码以获取已编译 cubin 的句柄并将程序注册到运行时。

有人可以向我解释或指出我在哪里可以找到有关函数的每个参数的信息吗?具体来说,我想更多地了解__cudafatcudabinaryrec第一个函数中使用的指针。关于第二个函数中的主机函数和设备函数指针。

谢谢

0 投票
1 回答
595 浏览

java - Java 是否存在通用或“胖”类文件?

胖二进制文件是可以在多个架构上运行的二进制文件。基本上,它由一个程序编译两次,每个架构编译一次,然后写入同一个文件。最著名的例子可能是 Apple 的“通用”二进制文件,它允许为 Intel 和 Power PC 架构编译程序,并从同一个可执行文件运行。

这对 Java 来说从来都不是问题,因为 Java 在 JVM 上运行,允许它在任何支持 JVM 的计算机上运行。但是,Android现在很流行,而且Android的VM(Dalvik),不兼容JVM。是否有某种方法可以将代码编译两次,并创建一个可以由 JVM 和 Dalvik 执行的类文件?如果没有,这甚至可能吗?

0 投票
2 回答
1440 浏览

ios - 尝试将胖二进制文件与 64 位模拟器目标链接时出错

我有一个用于 iOS 和 OS X 的静态库 lipo'd,有 5 种架构(x86_64、i386、armv7、armv7s、arm64)。

  • x86_64 架构是使用 macosx SDK 构建的
  • i386 架构是使用 iphonesimulator SDK 构建的
  • ARM 架构是使用 iphoneos SDK 构建的

当我尝试在示例应用程序中链接生成的库时,它在为设备或 32 位 iOS 模拟器目标构建时有效。但是当我尝试为 64 位 iOS 模拟器目标构建它时,我得到一个链接器错误:

如果我从 fat 库中删除 x86_64 切片,它适用于所有设备和模拟器。

我认为这是因为链接器更喜欢 x86_64 架构,如果它适用于 64 位模拟器。但由于它是为 macosx SDK 编译和链接的,它以某种方式对 OS X 依赖项进行了编码。

我尝试为 iphonesimulator SDK 添加第二个 x68_64 切片,但 lipo 不允许我这样做。此外,我试图找到一种方法让模拟器使用 i386 架构,即使是 64 位构建,但到目前为止还没有运气。

如果绝对必要,我可以创建 2 个二进制文件来解决这个问题,但我真的更喜欢将它们放在一个文件中。有没有办法做到这一点?