问题标签 [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.
macos - 对 Apple Silicon 的 SSE/neon 支持
我正在尝试让我的应用程序为 Apple Silicon 做好准备。我的应用目前使用适用于 Mac 的 SSE 指令和适用于 iOS 的等效 Neon 实现。
Apple 移植指南建议迁移到 Accelerate 框架,我现在还没有准备好这样做。
有没有办法在 Apple 芯片的通用二进制文件中继续使用 SSE/neon(基于架构)?我可以看到 arm64_neon.h 不适用于 Apple Silicon。
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"
失败并出现以下错误:
xcode - 在旧的 MacOS 应用程序中激活 Build for Any Mac(Apple Silicon、Intel)
我想将我的 MacApp 移植到一个通用版本,包括新 Apple Silicon Arm64 芯片的二进制文件。
除了在 Xcode 12.1 上使用标准架构构建设置,我还需要做什么?我的方案只显示 Any Mac (Intel)
python - 在新的 Apple Silicon 架构上运行 Ruby、Node、Python 和 Docker?
如何获得在 Apple Silicon 架构上运行的 Ruby、Python 和 Node.js 开发环境。Docker 等虚拟化软件呢?
python - Homebrew 可以在 Apple ARM 处理器上运行吗?
我订购了配备 M1 ARM 处理器的 MacBook Pro。我能否运行Homebrew并安装 Python、Node 等开发工具?
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
r - Apple 芯片上的 R 和 Rstudio
有没有人了解 R 和 Rstudio 的未来路线图以支持新的 ARM 架构?
我知道我们可能应该依赖 Rosetta2,但我只是想知道我们是否能够运行本机代码。
c++ - 为什么我在 Apple Silicon 上编译的本机应用程序有时构建为 arm64,有时构建为 x86_64?
我有一个基本的 C 程序:
当我cc
在 Apple Silicon 设备上直接编译它时,它会生成一个arm64
可执行文件:
但是,当我通过 CMake 或 Ninja 等构建系统构建它时,它会生成一个 x86_64 二进制文件:
我已经验证了构建脚本正在运行的命令与我自己运行的命令相同。如果我复制并粘贴命令并自己运行它,生成的可执行文件又是 arm64。
macos - 为什么除非我删除以前的可执行文件,否则使用 x86_64 构建系统构建的本机 arm64 应用程序无法进行代码签名?
我有一个简单的 C 应用程序:
当我:
- 在 Apple Silicon 设备上构建它
- 瞄准 arm64
- 使用为 x86_64 编译的构建系统
- 替换现有的二进制文件(例如在重建期间)
最终的二进制文件无法执行,并根据 shell 报告为“已终止”:
如果我的构建系统是原生 arm64(或 arm64e),那么就没有问题:
如果我将二进制文件复制到新路径然后替换代码签名,那么它可以工作:
原版复现步骤及调试
当我在 Apple Silicon 设备上构建它时,针对 arm64,但使用为 x86_64 编译的构建系统,最终的二进制文件无法执行,并且根据 shell 报告为“已终止”:
即使尝试调试它也会失败:
作为一种解决方法,我可以在调用之前使用 shim 编译器“重置”回 arm64 环境cc
,但这很不雅,而且感觉我缺少一些配置以避免跳过这么多的障碍。
这是在 macOS Big Sur 11.0.1 上。
从 x86_64 交叉编译
如果我从 x86_64 机器交叉编译并 scp 周围的二进制文件,文件执行得很好:
换机...
跟踪子进程
添加--verbose
到cc
调用会打印出子进程(我添加了换行符以突出显示其他调试中的那些):
编译器调用 has-triple arm64-apple-macosx11.0.0
和链接器调用 has -arch arm64
,因此似乎正在传递适当的值。
比较失败和成功的二进制文件
正如评论中所建议的,我尝试比较这两个二进制文件。不幸的是,一旦打开失败的可执行文件,建议的Beyond Compare工具也会崩溃。我怀疑这与 LLDB 报告被杀的根本原因相同。
同时,这是比较原始十六进制数据的输出:
在两个文件上运行otool -fahlLDtvV
并比较输出结果:
这似乎对应于原始十六进制转储的第一个大块,这表明重要的区别在于第二个大块。
代码签名
MachOView指示地址0xc180
出现在“代码签名”部分中。但是,签名似乎足够有效:
查看 Console.app,我确实看到了以下几行:
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。
任何帮助或信息来解决这个问题?