otool 引用了旧版本的 libffi

otool is referencing an old version of libffi

我正在尝试在 Mac OS 10.15.7.

上编译 R 包(在 Linux 中编译)

我在安装结束时遇到一个奇怪的问题,与 llvm-objdump-mp-7.0 引用 /opt/local/bin/libffi.7.dylib 有关。

问题似乎出在我的 Xcode/homebrew 工具集不知何故不同步。

我可以用

生成问题
$otool --version
llvm-otool(1): Apple Inc. version cctools-921
dyld: Library not loaded: /opt/local/lib/libffi.7.dylib
  Referenced from: /opt/local/libexec/llvm-7.0/lib/libLLVM.dylib
  Reason: image not found
fatal error: otool: fatal error in /opt/local/bin/llvm-objdump-mp-7.0

然而,

$ ls /opt/local/lib/libffi*
/opt/local/lib/libffi.8.dylib   /opt/local/lib/libffi.dylib
/opt/local/lib/libffi.a

我 运行 brew update 然后是 brew upgradebrew reinstall libffibrew reinstall llvm

我已经将 Xcode 升级到 12.4,并安装了命令行工具。

我错过了什么?

我之前肯定安装了旧版本的 llvm,它把它的命令放在 /usr/local/bin 中,然后屏蔽了 /usr/bin/otool 的系统版本。

当前的 llvm 公式将更新的工具放在 /usr/local/opt/llvm/bin 中,以免掩盖 Xcode 版本。然而,旧版本仍然存在于 /usr/local/bin.

以下命令似乎可以解决我的问题。

sudo rm /opt/local/bin/otool
sudo rm /opt/local/bin/llvm-otool
sudo rm /opt/local/bin/*-mp-7.0

otools 现在可以正确找到 Xcode 版本,所以我再次 运行。