问题标签 [apple-silicon]

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 投票
1 回答
783 浏览

macos - 对 Apple Silicon 的 SSE/neon 支持

我正在尝试让我的应用程序为 Apple Silicon 做好准备。我的应用目前使用适用于 Mac 的 SSE 指令和适用于 iOS 的等效 Neon 实现。

Apple 移植指南建议迁移到 Accelerate 框架,我现在还没有准备好这样做。

有没有办法在 Apple 芯片的通用二进制文件中继续使用 SSE/neon(基于架构)?我可以看到 arm64_neon.h 不适用于 Apple Silicon。

0 投票
6 回答
4097 浏览

c++ - 将 boost 编译为通用库(Intel 和 Apple Silicon 架构)

我正在尝试在 MacOS 上将 boost 库构建为 dylib。我需要为英特尔架构和即将推出的 Apple Silicon (arm64) 架构构建它。

我下载了 boost 并运行了以下命令:

lipo -archs总是显示生成的 dylibs 架构是x86_64.

我有 Xcode12 beta 和 MacOS Catalina 10.15.7,

如果我在 Xcode 中创建一个项目并archs arm64 x86_64在构建设置中进行设置,我可以构建一个示例通用库。

运行命令./b2 cxxflags="-arch arm64 -arch x86_64"失败并出现以下错误:

0 投票
2 回答
759 浏览

xcode - 在旧的 MacOS 应用程序中激活 Build for Any Mac(Apple Silicon、Intel)

我想将我的 MacApp 移植到一个通用版本,包括新 Apple Silicon Arm64 芯片的二进制文件。

除了在 Xcode 12.1 上使用标准架构构建设置,我还需要做什么?我的方案只显示 Any Mac (Intel)

0 投票
4 回答
18587 浏览

python - 在新的 Apple Silicon 架构上运行 Ruby、Node、Python 和 Docker?

如何获得在 Apple Silicon 架构上运行的 Ruby、Python 和 Node.js 开发环境。Docker 等虚拟化软件呢?

0 投票
4 回答
8796 浏览

python - Homebrew 可以在 Apple ARM 处理器上运行吗?

我订购了配备 M1 ARM 处理器的 MacBook Pro。我能否运行Homebrew并安装 Python、Node 等开发工具?

0 投票
1 回答
243 浏览

ios - Apple 硅 DTK && Xcode12.2 rc && arm64 ios 模拟器 && 为 ios sim 构建,但链接 ios

如果使用apple Silicon dtk 运行项目,有同样的问题,如何解决?设备:DTK mac mini,Xcode 版本:12.2 rc,运行到 ios 模拟器,arch 为 arm 64。抛出错误:为 iOS 模拟器构建,但在为 iOS 构建的目标文件中链接,用于架构 arm64

0 投票
1 回答
5123 浏览

r - Apple 芯片上的 R 和 Rstudio

有没有人了解 R 和 Rstudio 的未来路线图以支持新的 ARM 架构?

我知道我们可能应该依赖 Rosetta2,但我只是想知道我们是否能够运行本机代码。

0 投票
1 回答
988 浏览

c++ - 为什么我在 Apple Silicon 上编译的本机应用程序有时构建为 arm64,有时构建为 x86_64?

我有一个基本的 C 程序:

当我cc在 Apple Silicon 设备上直接编译它时,它会生成一个arm64可执行文件:

但是,当我通过 CMake 或 Ninja 等构建系统构建它时,它会生成一个 x86_64 二进制文件:

我已经验证了构建脚本正在运行的命令与我自己运行的命令相同。如果我复制并粘贴命令并自己运行它,生成的可执行文件又是 arm64。

0 投票
0 回答
1341 浏览

macos - 为什么除非我删除以前的可执行文件,否则使用 x86_64 构建系统构建的本机 arm64 应用程序无法进行代码签名?

我有一个简单的 C 应用程序:

当我:

  1. 在 Apple Silicon 设备上构建它
  2. 瞄准 arm64
  3. 使用为 x86_64 编译的构建系统
  4. 替换现有的二进制文件(例如在重建期间)

最终的二进制文件无法执行,并根据 shell 报告为“已终止”:

如果我的构建系统是原生 arm64(或 arm64e),那么就没有问题:

如果我将二进制文件复制到新路径然后替换代码签名,那么它可以工作:


原版复现步骤及调试

当我在 Apple Silicon 设备上构建它时,针对 arm64,但使用为 x86_64 编译的构建系统,最终的二进制文件无法执行,并且根据 shell 报告为“已终止”:

即使尝试调试它也会失败:

作为一种解决方法,我可以在调用之前使用 shim 编译器“重置”回 arm64 环境cc,但这很不雅,而且感觉我缺少一些配置以避免跳过这么多的障碍。

这是在 macOS Big Sur 11.0.1 上。

从 x86_64 交叉编译

如果我从 x86_64 机器交叉编译并 scp 周围的二进制文件,文件执行得很好:

换机...

跟踪子进程

添加--verbosecc调用会打印出子进程(我添加了换行符以突出显示其他调试中的那些):

编译器调用 has-triple arm64-apple-macosx11.0.0和链接器调用 has -arch arm64,因此似乎正在传递适当的值。

比较失败和成功的二进制文件

正如评论中所建议的,我尝试比较这两个二进制文件。不幸的是,一旦打开失败的可执行文件,建议的Beyond Compare工具也会崩溃。我怀疑这与 LLDB 报告被杀的根本原因相同。

同时,这是比较原始十六进制数据的输出:

在两个文件上运行otool -fahlLDtvV并比较输出结果:

这似乎对应于原始十六进制转储的第一个大块,这表明重要的区别在于第二个大块。

代码签名

MachOView指示地址0xc180出现在“代码签名”部分中。但是,签名似乎足够有效:

查看 Console.app,我确实看到了以下几行:

0 投票
2 回答
4226 浏览

xcode - 错误:Apple 硅 Mac 支持问题。该应用程序已将 LSApplicationLaunchProhibited 设置为 true。Mac 不支持此功能,如何解决?

尝试向 App Store 提交贴纸包时出现此错误:

警告 ITMS-90863:“Apple 硅 Mac 支持问题。该应用已将 LSApplicationLaunchProhibited 设置为 true。Mac 不支持此功能。”

贴纸包不适合在 Mac 上使用,仅适用于 iPhone 和 iPad?如何删除此警告以便成功上传?因为后来我也收到了这封邮件:

我们发现了您的应用最近交付的一个或多个问题,即“应用名称”。您的交付成功,但您可能希望在下次交付时更正以下问题:

ITMS-90863:Apple 硅 Mac 支持问题 - 该应用程序已将 LSApplicationLaunchProhibited 设置为 true。Mac 不支持此功能。

更正问题后,您可以将新的二进制文件上传到 App Store Connect。

任何帮助或信息来解决这个问题?