问题标签 [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 投票
0 回答
35 浏览

ios - 不同架构切片中的“共享”字节码?

我有这个包含两个切片(armv7 和 armv7s)的通用二进制文件。我有一些简单的类,它们只保存一些数据。是否可以编译这些类,以便它们只在二进制文件中一次而不是每个切片一次?我问这个的原因是我想减少应用程序的编译大小。

谢谢!

0 投票
1 回答
34648 浏览

cuda - CUDA:如何使用 -arch 和 -code 以及 SM 与 COMPUTE

我仍然不确定在使用 nvcc 构建时如何正确指定代码生成的体系结构。我知道在我的二进制文件中嵌入了机器代码和 PTX 代码,这可以通过控制器开关-code-arch(或两者的组合使用-gencode)来控制。

现在,根据这一点,除了两个编译器标志之外,还有两种指定架构的方法:sm_XXcompute_XX,其中compute_XX指的是虚拟架构和sm_XX真实架构。该标志-arch仅采用虚拟架构的标识符(例如compute_XX),而该-code标志同时采用真实架构和虚拟架构的标识符。

文档状态-arch指定了为其编译输入文件的虚拟架构。但是,此 PTX 代码不会自动编译为机器代码,而是一个“预处理步骤”。

现在,-code应该指定 PTX 代码针对哪些架构进行组装和优化。

但是,尚不清楚将在二进制文件中嵌入哪个 PTX 或二进制代码。例如-arch=compute_30 -code=sm_52,如果我指定,这是否意味着我的代码将首先编译为功能级别 3.0 PTX,然后将创建功能级别 5.2 的机器代码?将嵌入什么?

如果我只是指定-code=sm_52会发生什么?只有 V5.2 的机器代码会嵌入由 V5.2 PTX 代码创建的机器代码吗?和有什么区别-code=compute_52

0 投票
1 回答
547 浏览

c++ - 与 CUDA 代码链接时出错:`__cudaRegisterLinkedBinary_ 的多个定义

我有一些 CUDA 代码正在编译到 .a 库中,还有一些(与 CUDA 相关的)常规 C++ 代码用于使用它的应用程序。一切都在进行中间链接。

现在,在一台机器上(使用 CUDA 8.0 RC)构建成功,但在另一台机器上(使用 Maxwell 而不是 Kepler 卡,以防万一)我得到:

我实际上开始从编译到调用库代码的二进制文件中删除文件 - 只有当我删除所有文件时,链接才会成功。

我的问题:

  • 在什么情况下会出现这种不一致的行为?
  • 这可能是库和二进制文件“第二次链接”的结果吗?
  • 我可以做些什么来准确地确定实际冲突的内容(例如要查找哪些符号)?
  • 如果实际上没有任何冲突,我应该怎么做才能避免这种情况?

笔记:

  • 在一台机器上我使用的是 CUDA 7.5,在另一台机器上它是 CUDA 8.0 RC。
0 投票
2 回答
686 浏览

windows - 如何将 64 位和 32 位可执行文件合二为一?

好吧,所以我的想法是通过某种方式将 64 位和 32 位 Windows 可执行文件绑定到一个应用程序中,这样如果它不运行 64 位版本,它就会尝试 32 位版本。

我正在阅读有关 PE 的内容并了解了一些有关 MS-DOS 实模式存根的知识,它说明了它如何调用应用程序(通常是错误消息)。但是每次我尝试对 MS-DOS 实模式存根进行研究时,它似乎只显示错误消息。所以我的想法是用我的 32 位应用程序覆盖存根。

我天真地认为,当 32 位操作系统运行 64 位可执行文件时,它会失败,然后运行存根文件。

有什么方法可以让我的可执行文件 32 位/64 位独立?

0 投票
1 回答
1102 浏览

c - 解析通用/胖二进制文件

我正在做一个项目来实现一个基本的nm使用 memory-mapping mmap。我已经能够使用以下代码解析 64 位二进制文​​件:

根据这个链接,mach-o 和 fat 二进制文件之间的唯一区别是fat_header它上面的结构,但只是跳过

没有让我进入 load_command 区域(段错误)。如何访问胖/通用二进制文件的加载命令。

我正在使用运行 macOS High Sierra 的 64 位 Mac。谢谢你。

0 投票
1 回答
6640 浏览

frameworks - Xcode 10 的胖框架脚本?

我在我的方案中存档的后期操作中使用了这个脚本来制作一个 FAT 二进制框架。可以在模拟器和实际设备上运行的一种。

https://gist.github.com/gauravkeshre/eabb2a13ef6d673fadec84ca60b56b05

有谁知道如何将其转换为与 Xcode 10 一起使用?

使用遗留构建系统修复错误,但我宁愿不依赖它。

这是脚本本身:

** BUILD SUCCEEDED ** 后输出日志中的错误:

接着:

一旦进入 Release-universal 文件夹,第一个路径就会动摇,因为没有 .framework 文件夹。相反,框架的内容在那里。

0 投票
0 回答
83 浏览

objective-c - 无法将本机 Obj-C 库绑定到 Xamarin.iOS 项目

我在尝试将我在 XCode 中创建的本机 Obj-C 静态库绑定到我的 Xamarin.iOS 项目时遇到了困难。我完成了创建胖二进制文件的必要步骤。它创建了 x86 和 ARM 架构,但它抛出一个错误,说它在包装类中找不到本机 Obj-C 类。当我使用以下命令“nm -arch”检查手臂符号表时,符号表为空

链接到我尝试过的示例:https ://docs.microsoft.com/en-us/xamarin/ios/platform/binding-objective-c/walkthrough?tabs=windows#Creating_A_Static_Library

0 投票
2 回答
18675 浏览

makefile - How to run Makefile in mac

I want to create a fat library in mac. So I foll this. I copied the content of makefile into an edit text and renamed it to Makefile.mak. I opened the terminal in where the makefile is located and types "make" in the terminal and hit enter. I am getting an error that "Makefile is not found". What would be the reason for this? Where I made a mistake? Please help me. Thanks

0 投票
1 回答
166 浏览

ios - 如何理解'mach-o/fat.h'中关于fat_arch_64的评论

最近在学习一些Mach-O相关的资料,注意到评论

当切片大于 4mb 或切片的偏移量大于 4mb 时,将使用 64 位 fat 文件格式。

'mach-o/fat.h'大约struct fat_acrh_64

我知道我们应该使用 的值fat_header.magic来决定使用fat_archfat_arch_64解析胖文件中的数据。

但我对评论感到困惑,为什么限制条件是4 Mbslice/offset评论中的意思是什么?

这是头文件的屏幕截图: 在此处输入图像描述

0 投票
0 回答
22 浏览

c++ - 构建 Mozilla nspr 的胖二进制文件

我正在尝试将 mozilla nspr 构建为胖二进制文件。我能够使用 cmake 和下一行将简单的项目构建为胖二进制文件:

我在构建 Mozilla nspr 时也尝试这样做。这是我的步骤:

结果架构是 x86_64。我在这里想念什么?请指教。