执行 go build 时出现错误:在 %PATH% 中找不到可执行文件 gcc。

153

我使用的是Windows 10。当我尝试构建Chaincode时,它报告了这个错误。

# github.com/hyperledger/fabric/vendor/github.com/miekg/pkcs11 
exec: "gcc": executable file not found in %PATH%

我的链码导入:

import (
    "fmt"
    "strconv"

    "github.com/hyperledger/fabric/core/chaincode/shim"
    pb "github.com/hyperledger/fabric/protos/peer"
)

它在Docker中正常运行。


2
那么你有什么问题? - zerkms
go build 命令出现上述 gcc 错误...我该如何解决? - jaswanth
1
需要吗? - jaswanth
当然,是的。 - Volker
3
你的错误信息是 "gcc": executable file not found。这应该是你第一个提示,表明需要但未找到 "gcc"。 - Jonathan Hall
显示剩余2条评论
24个回答

146

2
谢谢,它起作用了,但现在出现了不同的错误:.\hyperledger\fabric\vendor\github.com\miekg\pkcs11\pkcs11.go:29:18: 致命错误: ltdl.h: 没有那个文件或目录编译终止。 - jaswanth
我安装了libtools,但它没有起作用。 - jaswanth
jaswanth,看一下@Ashinkel给出的答案。我之前也遇到了同样的问题,但那个方法对我有效。 - pkmelee337
1
下载 Windows 版 TDM-GCC 安装程序时,请使用 x64 版本。对我来说,32 位版本无法解决问题。 - Kent
TDM-GCC的安装[https://jmeubank.github.io/tdm-gcc/]在我的Windows 10上运行良好,使用fyne [https://fyne.io]进行测试执行。 - Camilo Caquimbo
2
如果您正在使用VSCode,在安装TDM-GCC后,您需要关闭VSCode并重新打开它。这是必要的,以便更新VScode终端并找到gcc命令。 - Eduardo Mior

146

如果您正在运行Ubuntu,请执行以下操作:

apt-get install build-essential

这解决了问题。它安装了gcc/g++编译器和库。


14
当你在Ubuntu中遇到sudo问题时,请使用此命令。 - Neo Ravi
1
如果在安装时遇到依赖关系问题,请尝试使用“sudo aptitude install build-essential”。 - ilya_direct
哪个Ubuntu shell将路径存储在名为%PATH%的变量中? - kfsone
1
值得注意的是,构建Go源代码不需要build-essential,因此您可能在安装需要它来构建的依赖项之前不需要它。 - ThetaSinner
4
原文已经简洁明了,可翻译为:“OP正在使用Windows操作系统!” - Tomáš Fejfar

26

我也遇到了这个信息,但在我的情况下,是因为缺少了gcc.exe。我使用choco并安装了mingw,然后它就可以工作了。

具体步骤:

  1. 下载choco
  2. choco install mingw -y
  3. 检查:gcc -v

2
也适用于 Scoop:scoop install mingw - James Cameron
快速问题,如果你直接使用 scoop 安装 gcc(例如:scoop install gcc),为什么这样不起作用呢? - mpmcintyre

19

1) 从https://sourceforge.net/projects/mingw-w64/安装.exe文件。

1.2) !使用x86_64架构。

2) 将C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin添加到用户变量系统变量PATH中。对于我而言,它是有效的。

!要编辑Path变量,请按Windows键,输入'path',选择'编辑系统环境变量',点击'环境变量',在系统变量用户变量中找到Path变量,然后进行编辑。


2
这个解释有点晦涩,但是我通过仔细阅读这里所说的内容并“解释”了Alex的意图来解决了这个问题:在第一步安装应用程序时应用1.2步骤,然后再进行第二步。 - Bazzz
6
在我的情况下,C:\Program Files\Git\mingw64\bin 是正确的路径,因为我安装了 Git 客户端并且它使用 mingw64。 - T1960CT
4
在Windows系统中,一旦您编辑了系统环境变量中的PATH,请记住您需要退出/关闭任何打开的命令终端,因为它们将无法接收到PATH更新。 - lucsan

17

5
不需要重置您的电脑,只需重新启动您正在使用的任何Shell即可。 - rhody
链接无效,我使用了这个链接:https://jmeubank.github.io/tdm-gcc/ - Arsham Arya

15

如果您正在使用基于alpine的镜像来创建Dockerfile

请安装build-base,它将满足您的需求。

apk add build-base

你能解释一下它背后的直觉吗? - Shaikh Abuzar
它包含了其他几个软件包,你的操作系统可能需要,包括g++、make、libc、libc-dev、gcc等。 - Yagiz Degirmenci
2
这个答案真是救星! - ScanQR

9
$ go env

检查 CGO_ENABLED 是否为 1,如果是则通过以下方式将其更改为 0

$export CGO_ENABLED=0 

2
你打错字了,应该是:export CGO_ENABLED=0(带有“A”)。 - Francisco Cardoso
在容器内部? - KD.S.T.
这对我的特定用例最终起到了作用。唯一的区别是在Windows上需要在命令行中运行go env -w GCO_ENABLED=0 - Ben G

5

4

为什么在Windows环境下使用go build无法工作的详细解释已经在其他答案中给出。为了让您的编译正常工作而不需要安装额外的东西,您可以尝试以下方法:

go build --tags nopkcs11

这个对我有用,希望对你也有用。


1
太棒了!谢谢!如果您使用Visual Studio Code作为Windows编辑器,您可以通过以下设置将其添加到您的设置中:"go.buildTags": "nopkcs11"。 - pkmelee337

4

我只是按照以下指示操作并解决了我的问题:

https://code.visualstudio.com/docs/cpp/config-mingw

它要求通过MSYS2安装 Mingw-w64。

重要的命令是pacman -S --needed base-devel mingw-w64-x86_64-toolchain,然后将C:\msys64\mingw64\bin添加到PATH中。

谢谢


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