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
它对我有用。我希望同样适用于你。
- 您需要下载MingGW64
- 将 MingGW64 文件夹放入您的 $PATH
- 运行 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 Variables
和System 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会自动带走。
在 Ubuntu 上非常简单,但在 windows 上需要这样做:
- 在 http://www.mingw.org/
下载 MinGW
- 在基本包 Gcc-g++ 上安装(参见 this image)
- 添加 windows 变量的环境补丁。
- 重启并继续 "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
,然后就可以了。
详情:
- 下载choco
choco install mingw -y
- 检查:
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:
安装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
安装 gcc
sudo yum groupinstall“开发工具”
我建议使用包组,即使没有它也可以完成,因为组安装为您提供了在 Amazon Linux 和 Redhat、CentOS 上编译软件所需的包。
我正在使用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
它对我有用。我希望同样适用于你。
- 您需要下载MingGW64
- 将 MingGW64 文件夹放入您的 $PATH
- 运行 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 Variables
和System 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会自动带走。
在 Ubuntu 上非常简单,但在 windows 上需要这样做:
- 在 http://www.mingw.org/ 下载 MinGW
- 在基本包 Gcc-g++ 上安装(参见 this image)
- 添加 windows 变量的环境补丁。
- 重启并继续 "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
,然后就可以了。
详情:
- 下载choco
choco install mingw -y
- 检查:
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:
安装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
安装 gcc
sudo yum groupinstall“开发工具”
我建议使用包组,即使没有它也可以完成,因为组安装为您提供了在 Amazon Linux 和 Redhat、CentOS 上编译软件所需的包。