exec: "gcc": 尝试构建时在 %PATH% 中找不到可执行文件

exec: "gcc": executable file not found in %PATH% when trying go build

我正在使用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 还好。

gcc 应该不是必需的,除非您正在为非 windows 平台进行交叉编译,或者使用 cgo。 但是,如果您仍然需要 gcc,则应该安装 MinGW,它为 Windows 提供了一个 gcc 端口(Cygwin 和 msys 应该也可以,尽管我从未实际测试过)。

编辑:我现在从你的错误消息中看到,它是一个需要 gcc 的依赖项。如果您还不知道,gcc 是一个 c/c++ 编译器,在这种情况下,它可能需要编译依赖项或子依赖项包含的 c 源文件。

gcc (the GNU Compiler Collection) provides a C compiler. On Windows, install TDM-GCC. The github.com/miekg/pkcs11 package uses cgo。 Cgo 允许创建调用 C 代码的 Go 包。

为什么 go build 在 Windows 环境中不适用于 hyperledger 的正确解释作为其他答案给出。 为了你的编译目的,只是为了让它工作而不安装任何额外的东西,你可以尝试以下

go build --tags nopkcs11

它对我有用。我希望同样适用于你。

  1. 您需要下载MingGW64
  2. 将 MingGW64 文件夹放入您的 $PATH
  3. 运行 go build xxx.go (with cgo library)

您好 jaswanth,主要问题是您尚未将 %GO_HOME%\pkg\tool\windows_amd64 注册到您的环境路径。 %GO_HOME%是你第一次安装go的仓库。

修复“exec: “gcc”: %PATH% 中未找到可执行文件”错误的说明与 MSYS2:

  • 下载 MSYS2。
  • 将 MSYS2 文件夹放入您的 $PATH。
  • 启动MSYS2命令行程序。
  • 运行 这个命令:pacman -S gcc.

1) 从 > https://sourceforge.net/projects/mingw-w64/

安装 .exe

1.2)!使用 x86_64 架构

2) 在User VariablesSystem Variables中将C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin添加到PATH。对我来说它有效。

!要编辑 Path 变量,请按 Windows 键,键入 'path',选择 'Edit the system environment variables',单击 'Environment Variables',在 System variables 中找到 Path 变量然后在 User variables 中编辑。

如果你是 运行 Ubuntu 做:

apt-get install build-essential

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

在Windows上安装http://tdm-gcc.tdragon.net/download,仅此而已。

您可以尝试 - 这不是解决方案,而是临时解决方法

cgo_enabled=0 go build 

安装 gcc 后 - 并确保 %PATH 可以找到它 (gcc.exe) - 这应该会消失。

另外 运行 这将确保只要终端打开,cgo_enabled 变量就会保持这种状态。这样你就不必在每次构建时都添加前缀。

export cgo_enabled=0 go build 

和其他一样,只需安装 tdm-gcc,但你可以使用它的终端,"MinGW",你可以从开始菜单文件夹 tdm-gcc 访问它,启动后,浏览到你的项目,然后 运行 再来一次

请安装MINGW,GUI会自动带走。

http://mingw.org/wiki/Getting_Started

在 Ubuntu 上非常简单,但在 windows 上需要这样做:

  1. http://www.mingw.org/
  2. 下载 MinGW
  3. 在基本包 Gcc-g++ 上安装(参见 this image)
  4. 添加 windows 变量的环境补丁。
  5. 重启并继续 "go get ..."
$ go env

检查 CGO_ENABLED 是否 1 通过[将其更改为 0 =12=]

$export CGO_ENABLED=0 

如果您在 Dockerfile 中使用基于 alpine 的映像

安装 build-base 将满足您的要求。

apk add build-base

如果你是 运行 Ubuntu 做:

sudo apt-get update
sudo apt-get install build-essential.

如果上述命令不起作用,请执行:

sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu $(lsb_release -sc) main universe"

主要组件包含的应用程序是免费软件,可以自由重新分发,并得到 Ubuntu 团队的全力支持。 & Universe 组件是免费、开源和 Linux 世界的快照。

然后在终端中通过以下命令安装包:

sudo apt-get update
sudo apt-get install build-essential.

有关更多信息,请单击此处:https://itectec.com/ubuntu/ubuntu-problem-installing-build-essential-on-14-04-1-lts-duplicate/

我也遇到过这条消息,但就我而言,它丢失了 gcc.exe。我使用了 choco 并安装了 mingw,然后就可以了。

详情:

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

在 Windows 上,您可以通过 Scoop 安装 gcc:

scoop install gcc

我是 Windows 用户,我从下面的 link 下载了 tdm-gcc(基于 MinGW-w64):

https://jmeubank.github.io/tdm-gcc/

安装后,创建了一个名为“TDM-GCC-64”的文件夹。

我在 PATH 中添加了“C:\TDM-GCC-64\bin”,它解决了我的问题。

对于我的情况: os: windows 10

命令:

choco install mingw

如果没有安装 choco,请安装: Link: https://www.liquidweb.com/kb/how-to-install-chocolatey-on-windows/

对我有用。

对于 Ubuntu,对我有用的是 运行:

sudo apt 安装 gcc

只需将此添加到您的 Dockerfile

RUN apk add alpine-sdk

在亚马逊上 Linux 2:

  1. 安装go

    wget https://go.dev/dl/go1.18.1.linux-amd64.tar.gz

    rm -rf /usr/local/go && tar -C /usr/local -xzf go1.18.1.linux-amd64.tar.gz

    导出 PATH=$PATH:/usr/local/go/bin

  2. 安装 gcc

    sudo yum groupinstall“开发工具”

我建议使用包组,即使没有它也可以完成,因为组安装为您提供了在 Amazon Linux 和 Redhat、CentOS 上编译软件所需的包。