Git 命令在 Mac 终端中不起作用:“dyld:找不到符号:___strlcpy_chk”错误

Posted

技术标签:

【中文标题】Git 命令在 Mac 终端中不起作用:“dyld:找不到符号:___strlcpy_chk”错误【英文标题】:Git commands not working in Mac terminal: "dyld: Symbol not found: ___strlcpy_chk" error 【发布时间】:2014-01-22 15:50:22 【问题描述】:

我正在使用命令 git clone ssh://.... 并在终端上收到以下错误:

dyld: lazy symbol binding failed: Symbol not found: ___strlcpy_chk
  Referenced from: /usr/local/git/bin/git
  Expected in: /usr/lib/libSystem.B.dylib

dyld: Symbol not found: ___strlcpy_chk
  Referenced from: /usr/local/git/bin/git
  Expected in: /usr/lib/libSystem.B.dylib

Trace/BPT trap: 5

【问题讨论】:

将以下内容放在我的 .bash_profile 但结果相同:DYLD_LIBRARY_PATH=/usr/lib/libSystem.B.dylib 说明您的 MacOS 版本:10.8? 10.6? 近乎重复:git command-line on Mac OS error “dyld: Symbol not found: ___strlcpy_chk”。应该合并到这个问题中。 【参考方案1】:

我需要从 Xcode 安装命令行工具。这样做 -

    打开 Xcode 并点击Cmd+, 点击下载 安装命令行工具。

http://www.hongkiat.com/blog/mountain-lion-git-fix/

【讨论】:

这对我也有用,但我必须编辑我的 .bash_profile 以从 PATH 中删除 /usr/git/bin,并且只使用 /usr/bin。 Apple 的 1.8.5.2 版本位于 /usr/bin 中,它没有 dyld 问题。 大家好,5 年后(2019 年)并与 Mojave 合作,这个解决方案仍然对我有用。但是,Xcode 10.2.1 中似乎不再有“下载”面板。升级到最新的 Xcode (10.2.1) 后,我不得不“手动”从 developer.apple.com/download/more 安装开发工具(我下载了文件 Command_Line_Tools_macOS_10.14_for_Xcode_10.2.1.dmg)。不过,请确保在尝试运行 git 之前刷新终端。否则,您可能仍然会看到导致您阅读这些帖子的错误......【参考方案2】:

也可以查看https://***.com/a/19457333/894120 并创建一个对我有用的 .bash_profile。

【讨论】:

【参考方案3】:

我也遇到了同样的错误。我尝试了 PATH 和 .bash_profile 技巧(没有帮助)。我对安装 Xcode 和其他人建议的“命令行工具”并不感兴趣。但我确实偶然发现了一半的答案。

首先,我卸载了当前版本的 Git (1.9.2)。然后我发现可以自己安装命令行工具,而无需安装Xcode:

Xcode page:  https://developer.apple.com/xcode/
Downloads near the top
Scroll down to 'Additional Tools'->'View Downloads'
Command Line Tools (OS X Mountain Lion)

安装这些后,执行 'git --version' 会返回:

git version 1.8.5.2 (Apple Git-48)

在此过程中,文件“/usr/lib/libSystem.B.dylib”未被触及。或者至少,文件大小和日期没有改变。由于那个库没有改变,我推测不是 Xcode 正在修复问题,而是安装的 Git 版本。

我考虑过测试该理论,并找到了各种 Git 版本的较旧源代码,但没有时间花时间编译/安装/测试每个版本以查看该理论是否正确。而且我没有看到卸载“命令行工具”的简单方法。也许其他人更勇敢。 :)

--J

【讨论】:

恕我直言,这并不是真正的解决方案。这安装了苹果自己的 git 版本——现在有点旧了。这并不是说如何让最新的 git 二进制文件正常工作。 正确,它不安装最新版本。但是,最初的问题,也不是所描述的修复(或在我的情况下是半修复),但从未将其限制为或将其描述为安装最新版本。 这适用于我在 OSX 10.8.5 上,它似乎太旧了,无法按照接受的答案中的说明工作。【参考方案4】:

问题是 git 维护者只支持 MaxOS10.9 (mavericks)。如果您有早期版本,则不能使用他们的发行版。

工作中的其他人推荐 - 使用 (home)brew。基本上安装了 brew 你可以只使用:

brew install git

它会给你一个最新的版本。随后获取新版本使用:

brew upgrade git

现在 brew 本身使用 git,所以这个安装可能是递归的 - 我最近不得不安装它以用于另一个目的,并且花了我几个小时 - 但是一旦你有了它,一切都应该没问题。我只能说,当我最初安装 brew 时,“git”仍然指的是 1.8.x Apple 版本,并且通过这个更改,我现在得到了 git v2.1.0。

【讨论】:

【参考方案5】:

遇到了同样的问题。我有 OS X 10.8,所以 XCode 不是我的解决方案。

原来我的 Git 版本与我的 OS X 版本不兼容

此信息可能会有所帮助(通过谷歌搜索发现 :)):

如果你正在跑步:

10.6 雪豹:git-2.2.1-intel-universal-snow-leopard 10.7 狮子:git-2.2.1-intel-universal-snow-leopard 10.8 山狮:git-2.2.1-intel-universal-snow-leopard 10.9 小牛队:git-2.2.1-intel-universal-mavericks 10.10 优胜美地:git-2.2.1-intel-universal-mavericks

您可以从这里下载: http://sourceforge.net/projects/git-osx-installer/files/

【讨论】:

能在 10.9+ 上运行 git-2.2.1-intel-universal-snow-leopard 吗? 虽然@KateMak 接受的答案合乎逻辑,但它并不适用于所有机器。 Dana 推荐的较旧的 git 版本是可行的方法。【参考方案6】:

我也被 git 所困扰,导致可怕:

dyld: lazy symbol binding failed: Symbol not found: ___strlcpy_chk
Referenced from: /usr/local/bin/git
Expected in: /usr/lib/libSystem.B.dylib

dyld: Symbol not found: ___strlcpy_chk
Referenced from: /usr/local/bin/git
Expected in: /usr/lib/libSystem.B.dylib

在阅读了许多围绕更新 xCode (>2G) 或只是 xCode 的命令行工具部分 (~200M) 的成功执行建议后,我安装了命令行工具,这解决了我在命令行中使用 git 时遇到的问题。

有趣的是,我在 PyCharm 中遇到了同样的错误,即使在我进行了更新之后也是如此。我可以通过更改找到 git 的路径来解决这个问题(在 PyCharm->Preferences...->Version Control->Git 中,我将 /usr/local/bin/git 更改为 /usr/bin/git 附近顶部):

Image of PyCharm->Preferences...->Version Control->Git

我终于弄清楚到底发生了什么——为了向我从网络上获得的所有帮助表示敬意,想分享一下具体细节:

我发现我的机器上安装了两个版本的 git:

/usr/bin/git 
/usr/local/git/bin/git 
(also interestingly: /usr/local/bin/git -> ../git/bin/git)

将 /usr/bin 放在路径中的一些建议有些帮助,但可能无法解决安装的 git 版本不起作用的琐碎问题。

所以请注意:

$ pwd 
/usr/local/git/bin 
$./git --version 
git version 2.8.1

还有:

$ pwd 
/usr/bin 
$ ./git --version 
git version 1.8.5.2 (Apple Git-48)

Apple git 版本是可行的——这可能是通过从 xCode 安装命令行工具来安装的。注意每个路径。另请注意,您不必安装整个命令行工具,只需安装适当版本的 git。

此外,在 /usr/local/git/bin/ 目录下,还有一个 uninstall.sh 脚本。在该脚本中,它使用 pkgutil 卸载 git 版本。 (您应该使用此脚本进行卸载。)您可以运行此行来验证此实用程序是否有安装 git 的记录:

pkgutil --packages | grep com.git.pkg

这不是您想要的版本。你想要苹果版。使用 /usr/local/git/bin 中的脚本卸载损坏版本的 git。

卸载它可以确保您永远不会收到此错误,并且您将使用正确版本的 git。

希望对其他人有所帮助。信息很好但不完整。 PyCharm 几乎没有。

【讨论】:

以上是关于Git 命令在 Mac 终端中不起作用:“dyld:找不到符号:___strlcpy_chk”错误的主要内容,如果未能解决你的问题,请参考以下文章

为啥 apt-get 功能在 Mac OS X v10.9 (Mavericks) 的终端中不起作用?

Git选项卡完成在mac上的zsh中不起作用

在不受支持的 Mac 上,Spotlight 搜索在 MacOS Big Sur 中不起作用

为啥 hotkeys.trigger 在 Mac 中不起作用?

AppleScriptTask 命令在 Excel 2016 for Mac VBA 中不起作用

Xcode 4,断点在 Mac OS 命令行工具的单元测试中不起作用