2021-02-07

跟踪Golang编译错误 exec: "/missing-cc": file does not exist,以及解决方案


最近重装了Windows10系统,使用goland编译时一直弹下面错误,google找解决方案毫无线索。


#github.com/mattn/go-sqlite3
cgo: exec /missing-cc: exec: "/missing-cc": file does not exist

好不容易的发现这个问题只在当前最新的Golang v1.15.7版本出现,因为在降级到v1.15.6后,这个错误终于暴露出真面目,如下:

#github.com/mattn/go-sqlite3
exec: "gcc": executable file not found in %PATH%

原来是老问题,gcc组件没有安装,解决方法如下:


安装mingw-w64


官网下载mingw-w64:http://mingw-w64.org/doku.php/download/mingw-builds  (这是带向导的MingW-W64-builds安装方式,您也可以另外选择msys2方式安装)。

我的Windows10 64位环境可以选择x86_64,然后一直下一步即可。

image.png

注意,由于路径不能有空格,所以C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin 这个默认的安装地址要改成:C:\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin
如不注意此路径空格问题,则会在Golang v1.15.7编译时出现如下报错:

# github.com/mattn/go-sqlite3
cgo: exec C:\Program: exec: "C:\\Program": file does not exist

image.png

下一步,经过漫长等待....

image.png
修改路径后最终安装到了C:\mingw-w64,去目录看一下:C:\mingw-w64\...\mingw64\bin 是否存在?


编辑环境变量


将bin目录的完整路径复制并放到环境变量里面:
我这里是 C:\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin (版本不同路径会有不同)

image.png

编辑完环境变量,点击确定。
重启控制台并输入 gcc -v ,如下结果表示gcc组件配置成功

image.png


重启Goland
编译通过!!!