Git for Windows-程序无法启动,因为缺少libiconv2.dll文件。

94

当我尝试在Windows 7(64位)上的git Bash中运行某些命令(例如git push)时,会出现以下错误:

The program can't start because libiconv2.dll is missing from your computer

我已经彻底搜索了解决方案。
最多的只能在google code网站上找到一个问题线程(Issue 419)和一些其他博客。据我所知,这些帖子提供的建议都不能解决我的问题。
我已经尝试过重新安装。我已经尝试将$GIT/bin添加到PATH中。
我可以验证dll在$GIT/bin目录中...但是我仍然无法推送到远程。
我在另一台Windows 7电脑上安装了msysgit,并以相同的方式安装了它...因此不用说我很困惑。
对此的任何帮助都将不胜感激。
谢谢,

1
DLL 应该放在 $GIT/lib 而不是 $GIT/bin,这样至少在 Linux/UNIX 上是这样工作的,库文件放在 lib 目录中。我不知道 msysgit 是否使用相同的布局方案,但很快就可以检查。 - David Z
这个问题应该提交给Git开发团队作为一个漏洞。但是我找不到Git网站上任何“提交漏洞”的链接... - Andriy Drozdyuk
1
第一个答案可行,您应该将其标记为已解决! - erikbstack
@DavidZ - 你解决了我的问题。你的回答必须在这里被接受。 - Mekey Salaria
@Groundshaker 不好意思,首先我发的是一个“评论”,而不是一个答案;而且它并没有解决原帖作者的问题,所以即使它是一个答案,也不应该被接受。无论如何,看起来已经有几个现有的答案已经涵盖了这个修复方法(显然应该是libexec而不是lib),所以我不会发表重复的内容。(但我很高兴我的评论对你有用。) - David Z
显示剩余2条评论
25个回答

105

这个帖子提供了解决方法:http://groups.google.com/forum/#!topic/msysgit/twrVn_EbNI4

  • cd 进入你的 git 安装目录
  • copy mingw\bin\libiconv-2.dll libexec\git-core
    (如果你的安装没有 mingw 文件夹,则为 copy bin\libiconv-2.dll libexec\git-core

在链接的帖子中,Drew 寻求协助,所以如果您认为可以帮助解决问题,您可能需要在 Google Groups 帖子中回复。

错误发生在以下版本中:

  • msysgit-fullinstall-1.7.4 或 1.7.6(和 1.7.7)
  • msysgit-netinstall-1.7.4 或 1.7.6(和 1.7.7)
  • Git For Windows 1.7.6(但不包括 1.7.4)

5
这是我的问题解决方案。我认为值得注意的是,这个解决方案特别适用于在submodule update期间出现错误的情况,但也可能修复其他情况。 - gapple
9
在使用 git-1.7.8 版本时,我需要将文件以相反的方向复制;libiconv2.dll 存在于 libexec/git-core 目录中,但需要被复制到 bin 目录中(或者创建链接:mklink /H libexec\git-core\libiconv2.dll bin\libiconv2.dll)。 - gapple
4
最新版本的1.7.10-preview20120409中,@grapple的修复方法对我有效,除了它使用的是libiconv-2.dll - Soliah
这个问题在最新的版本1.8.1.2中也会出现。我还不得不将dll文件复制到bin文件夹中。 - parsh
1
简而言之:Atlassian Sourcetree:按照说明将libiconv2.dll复制到libexec/git-core中。将libiconv2.dll重命名为libiconv-2.dll。当我尝试使用最新版本的Atlassian Sourcetree时,我遇到了同样的错误。Sourcetree被设置为使用外部Git(而不是嵌入式)。显然,libiconv2.dlllibiconv-2.dll是相同的文件,但SourceTree寻找名为libiconv-2.dll的文件,而不是libiconv2.dll。因此,如果您正在使用SourceTree,则需要在将其移动到git-core后将libiconv2重命名。 - Brandon S.
显示剩余4条评论

42
  • 将/Program Files/Git/bin/libiconv-2.dll复制到/Program Files/Git/libexec/git-core/

1
谢谢,这个解决方案对我很有帮助,在我的Win7机器上运行git版本1.7.7.1.msysgit.0。 - jesal
1
只是想指出一下 - 我的错误消息指定了 libiconv2.dll,而且我在 /bin 目录下既有 libiconv2.dll 又有 libiconv-2.dll。 - Roger_S
1
这很有帮助,谢谢。如果像我一样,你没有这些文件夹,请在%USERPROFILE%\Local Settings\Application Data\GitHub中查找它们(请参见我的答案)。 - wytten

15

我已经解决了这个问题...这里有几个需要注意的地方。

1)问题出在我的本地 .git/config 文件中配置的源地址拼写错误...所以我是个傻瓜。

2)Git Bash 在这种情况下不会正常失败,而是抛出一个非常具有误导性的警告错误,而不是报告 .git/config 文件中没有配置指定名称的源地址。

我唯一能够找出问题的方法是将 $GitPath/cmd 目录添加到我的路径中,并从命令行运行 git。然后,我能够得到一个详细的错误消息,指示远程仓库尚不存在。然后我打开了可靠的 vi 编辑器,发现确实有一个拼写错误。

这里的教训是,如果你在使用 msysgit 时遇到奇怪的 .dll 错误,很可能是由于配置错误...而不是某些系统异常或安装问题。

感谢所有尝试帮助解决的人!


1
+1. 在出现错误时,始终使用最小的本地CMD会话。这通常是有益的。 - VonC
谢谢,这解决了我的问题。我在Windows路径中将msysGit\bin更改为msysGit\cmd。 - Renaud
复制 C:\msysgit\mingw\bin\libiconv-2.dll 到 C:\msysgit\bin。我使用的是 "msysGit-netinstall-1.9.4-preview20140611" 进行安装。 - Jeflopo

14

我在Win 7上使用msysGit-fullinstall-1.7.3.1-preview20101002.exe时遇到了这个错误。

Added <msysgit_dir>\mingw\bin to PATH 

修复它。在该目录中找到了libiconv2.dll。


2
这对我没有用,不得不将 DLL 复制到 %WINDIR%(C:\windows)。 - jamiebarrow
我将 c:\MinGW\bin 添加到了环境变量中,问题得到了解决。 - JellicleCat

10

我在Mac上使用SmartGit时遇到了这个问题。 通过更改首选项->命令->可执行文件来解决它。

Git可执行文件:

/usr/bin/git

至:

/usr/local/git/bin/git

2
谢谢!在我的情况下,我必须使用 /usr/local/bin/git。 - ezequielc

3
由于SmartGit在错误结果中引用了stackoverflow网站上的此页面,我认为这些知识可能对某些人有用...
有时即使git安装没有问题,你仍然无法使用git bash并通过键入命令获得版本信息。
git -- version 

SmartGit不能添加仓库,并返回git已过时或无法获取版本信息(或类似于此消息)...

如果是这样,请首先检查您的安全工具和病毒清除应用程序的设置。在我的情况下,禁用comodo防火墙使smartgit能够看到健康的git安装和版本信息。


3

sqzaman的答案的变体,因��我没有他们所在的文件夹:

Copy
%USERPROFILE%\Local Settings\Application Data\GitHub\PortableGit_*\bin\*.dll
to
%USERPROFILE%\Local Settings\Application Data\GitHub\PortableGit_*\libexec\git-core

注意,我开始是复制 libiconv-2.dll,但后来它报错了,告诉我需要 libcurl.dll,因此我就复制了 *.dll。

1
经过一些尝试和错误,我发现将libcrypto.dll、libcurl.dll、libiconv-2.dll和libssl.dll复制到git-core目录中可以解决一个仓库的问题(最小化的解决方案)。如果为其他仓库出现问题,我也不会感到惊讶,可能需要将所有其他文件都复制一遍。 - alle_meije

2
最快的解决方法是在另一台电脑上定位*.dll文件并复制它 =)

2

我的回答解决了msysgit的同样错误,但可能有助于纯git。

在Windows 7上,我将<msysgit_dir>\mingw\bin添加到PATH(正如so_mv上面推荐的那样)(通过系统变量GUI),但我必须注销并重新登录操作系统,否则PATH值不会更新。


2
我刚试着在Windows上安装SmartGIT,遇到了同样的问题。后来我发现它不能通过指向git.exe来运行,而是要指向C:\msysgit\cmd\git.cmd。目前为止,它可以正常运行。我可以访问msysgit下的git仓库。
顺便提一下,我正在使用Windows的Net安装程序。
希望这种方法是正确的。

1
我正在使用Windows版GIT,对我来说,只需指向git.exe即可正常工作。 - Mandeep Janjua

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接