我如何找出哪些Mac应用程序是32位的?


28

2017年6月28日,苹果公司宣布,

macOS High Sierra将是支持32位应用程序且毫不妥协的最新macOS版本。

如何找出Mac上的哪些应用程序是32位的,以便查看是否需要升级它们?


1
他们将要制作自己的64位视频卡吗?

2
“ Physical-Compute” @ Physics-Compute到底是什么意思?我假设您指的是内存带宽?这与处理器的位数或操作系统的支持无关。在64位操作系统上不需要64位视频卡;实际上,64位视频卡在32位操作系统上可以正常工作(当然,对于应用程序不是这样)。
科迪·格雷

1
@CodyGray我假设它是指它支持DMA操作的地址位数。如果您拥有的内存超出了32位可寻址的范围,并且为DMA分配了一个缓冲区,则需要告知32位硬件部分,这是一个问题。
kasperd

1
抱歉,我更确切地说是64位驱动程序。图形驱动程序不是绝大多数是32位的吗?它也需要所有使用它们的进程都为32位模式吗?今天通常是64位的进程需要将IPC与32位进程一起使用才能与32位视频卡驱动程序对话。如果视频卡制造商没有制造64位驱动程序,那么不允许32位驱动程序或进程似乎是一个问题,不是吗?

1
视频驱动程序不可能是32位的,因为64位内核无法加载/使用32位驱动程序。视频卡制造商已经生产了64位驱动程序已有一段时间了,他们也必须在其他操作系统上进行此操作,因此这并不是一个疯狂的主张。驱动程序将处理kasperd谈论的DMA问题,因此这也不是问题。
科迪·格雷

Answers:


27

识别您仍在使用哪些32位应用程序的一种方法是使用“关于本机”下的“系统信息”选项。确切步骤因您所运行的macOS版本而异,但以下是适合您情况的主要步骤:

  1. 点击苹果菜单
  2. 选择关于本机
  3. 在弹出的“关于本机”窗口中,单击左下角的System Report...按钮(如果使用的是较旧的操作系统,则可能需要单击More Info...中心底部附近的按钮)。
  4. 这将打开“系统信息”窗口(或在较早版本的OS中为“系统概述”窗口)。
  5. 在左侧的边栏中,您将看到许多标题和子标题。
  6. 在“软件”标题下(这是第三个),您将看到一个标有“应用程序”的子标题。点击这个。
  7. 在右侧窗口的主要部分,您将看到出现的应用程序列表。请耐心等待,因为这可能要花一些时间。
  8. 列表出现后,您将在顶部看到列标题。
  9. 最后一列标记为“ 64-Bit (Intel)单击此列标题”,以按应用程序是否为64位对它们进行排序(即,针对每个应用程序列出的)。

请参考下图作为示例:

在此处输入图片说明

注意:在上图中,我没有对最后一列进行排序,因此您可以看到同时列出了“是”和“否”的条目。因此,在上面的示例中,您将看到iMovie v10.1.6是64位应用程序,而iMovie 9.0.9不是64位。


编辑-如果上述步骤导致错误

我看到有报告说,少数用户在等待列表填充时收到“插件在收集此信息时没有足够快的响应”错误消息。

如果发生这种情况,请退出系统信息应用程序(或旧版本的macOS中的System Profiler应用程序)并重新启动,但是这次跳过步骤1至4,直接转到您的Applications / Utilities文件夹并打开系统信息应用程序(或系统Profiler应用)直接从那里。打开后,请按照上述步骤5至8进行操作。


1
消息“插件在收集此信息时没有足够迅速地响应”对我来说一直是超时的。
JBis

感谢@Josh提醒我这个答案。去年年底,我确实意识到这是一个可能的问题,但是忘记了我已经回答了这个问题!我刚刚编辑了答案,并采用了适用于大多数用户的可能解决方法。让我知道您是否还有问题。
Monomeeth

直接从/ Applications / Utilities打开时,同样的问题。
JBis

27

在Finder中点击cmdF以获取搜索窗口。

  • 选择搜索:此Mac
  • 点击第一个搜索条件,然后选择“ 其他... ”,然后在此处选择“ 可执行体系结构 ”,“ ”,“ i386
  • 击中+按钮,添加第二个标准“ 可执行的体系结构 ”,“ 不是 ”,“ x86_64的

    在此处输入图片说明

您将获得所有仅i386(即32位)应用程序的列表。


在终端中,这可以通过以下方式完成:

mdfind "(kMDItemExecutableArchitectures == 'i386') && (kMDItemExecutableArchitectures != 'x86_64')"

奇怪的是,这种方法会提取几年前的一些PDF文件,例如“ Welcome to Leopard”。否则似乎工作正常。
雷铸

3
@Thunderforge“欢迎使用Leopard”不是.pdf而是应用程序IIRC,当您打开它时,它会选择您的语言pdf并在Preview中打开它。
曼努埃尔

@Manuel有趣!它带有PDF图标的事实让我大吃一惊。我什至没有想到它实际上是为您选择PDF的应用程序。
雷铸

我只是注意到,此方法无法在中找到应用程序~/Library/Application Support,例如Steam游戏。另一个解决方案可以。您知道是否有任何方法可以修改搜索以包括该内容吗?
Thunderforge

1
@Thunderforge终端版本可以找到Steam游戏。
安德里亚·拉扎罗托

3

到目前为止,据我所知,其他答案将在元数据索引中列出32位macOS应用程序(可能还有一些32位二进制文​​件)。如果要列出系统上每个仅32位的可执行二进制文件,请立即执行以下操作:

find / -type f -perm +111 -exec file -p {} \; -exec head -c 1 /dev/zero \; | xargs -0 -n 1 sh -c 'echo "$@" | head -n 1' -- | grep -v x86_64 | grep -E Mach-O.+i386

如果您安装了GNU findutils,则可能会大大简化。这里有些复杂性是为了克服macOS中包含的BSD findutils的限制。


3

这行一行的Terminal命令会将应用程序列表收集到桌面上的文本文件中。它会在查询中每次出现“(Intel):No”时获取前6行,之后获取2行。但是,它不会深入研究已编译的64位应用程序的32位支持二进制文件或库。该列表范围更广,即使是问题,我也找不到任何可以解决更深层次问题的资源。

system_profiler SPApplicationsDataType | grep -B 6 -A 2 "(Intel): No" > ~/Desktop/32BitAppList.txt

2

当您只需要检查一个应用程序时:

file myapplication

例如,我的光线追踪器rt

==> file rt
rt: Mach-O 64-bit executable x86_64
==>

file命令基本上会查看多种文件并尝试识别它们。对于OSX可执行文件,您几乎总是会看到其中的一个或多个:i386,x86_64和ppc分别是32位intel / amd架构,64位intel / amd架构和功能强大的PC架构(这些都已经很老了现在。)因此,您实际上只需要关心i386(32位应用程序)和x86_64(64位应用程序)。

对于打包的应用程序,应该右键单击并显示打包内容。在大多数应用中,contents → macOS可以找到一个可执行文件。其路径应用作的参数file


1
因为file /Applications/BitTorrent.app/Contents/MacOS/BitTorrent,我明白了Mach-O executable i386。这意味着什么 ?
ankii

这意味着该应用程序是32位可执行文件。这意味着它将无法在Apple最新的仅64位操作系统下运行。
fyngyrz

我找不到可以找到诸如此类的含义的表i386。请您添加这样的引用吗?
ankii

file命令基本上会查看多种文件并尝试识别它们。对于OSX可执行文件,你几乎总是看到一个或更多的这些:i386x86_64,和ppc它们分别是32位Intel / AMD架构,64位Intel / AMD架构和功率的PC架构(后者是相当老了。 )因此,您实际上只需要关心i386(32位应用程序)和x86_64(64位应用程序。)它们唯一重要的原因是因为Apple放弃了对32位应用程序的支持。
fyngyrz

1

我连续不断地获得“该插件在收集此信息时没有足够快地响应”。问题,并且无法使用任何建议的方法来解决。

事实证明,有一个命令行工具system_profiler提供了相同的信息。

因此,我直接去了源代码,并编写了一个红宝石脚本来编译一个列表,其中包含有关应用程序位置和安装源(如果可用)的更多信息。

您可以在此处找到脚本。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.