【Golang】排查 Build constraints exclude all the go files 的几个思路

news/2024/10/31 1:21:16/

输出该问题时说明在 Go 语言的启动编译(Build)阶段,出现了编译问题,往往是编译配置的问题。可以通过以下思路去排查对应的错误。

一、查看 go env 😶‍🌫️

(1)首先可以查看被排除的 Go 文件是否启用了条件编译,通常的形式为在文件的首行添加(以 Linux 为例):

// +build linux
// 或
//go:build linux

// +build 会逐渐取代 //go:build,但 go 1.16 之前的版本只支持 //go:build。加上上述条件编译后,该 Go 文件将只在 Linux 操作系统环境下才会被编译,若是 MacOS 和 Windows 环境下将无法被编译。解决方案是在 go env 和代码编辑器中都配置好 GOOS 参数(VSCode 在左下角的 GO/env 中设置;GoLand 在左上角的 settings 中配置)。

go env -w GOOS=linux

(2)若非操作系统环境的问题,接着考虑是否有交叉编译,即在 Go 语言编译时调用了其他语言的情况,一般是 C 语言。此时需要在 go env 中开启 CGO_ENABLED 特性。这样在进行 go build 时,就会在编译和链接阶段启动 gcc 编译器。

go env -w CGO_ENABLED=1

二、依赖包的依赖是否未导入 ⚙️

在 go 的旧版本中基于 GOPATH 来寻找依赖,但可能依赖包的依赖未导入,可以考虑打开 GO111MODULE,实现模块支持。go 命令行会使用modules,而完全不去 GOPATH 目录下查找模块。

go env -w GO111MODULE=on

三、是否存在重复依赖的情况 🔂

这是我最终排查出的错误,因为在 GoLand 的 settings 中可以存在三个 GOPATH,分别是 Global、Project 和 Module 的 GOPATH。
Global 在 go env 中配置,Project 是项目的 GOPATH。若配置了多个 GOPATH,在导入二方或三方包时,可能在多个 GOPATH 下都有对应的缓存模块,即重复依赖。此时需要删除多余的 GOPATH。


http://www.ppmy.cn/news/65803.html

相关文章

免费换电池还倒塞用户200,iPhone惨遭“耐用”反噬

多年来 iPhone 最为诟病的几个缺点之一肯定少不了电池。 在 Android 已经普及4、5000mAh 大电池加快充组合的情况下,iPhone 仅有 Pro Max(Plus)勉强及格。 更难受的是今年3月,官方换电池还迎来了幅度不小的涨价。 苹果这是在建议我…

【python爬虫一】爬虫基础操作

爬虫概述 概念:是一种按照一定的规则,自动地抓取互联网上网页中相应信息(文本、图片等)的程序或脚本,然后把抓取的信息存储下来。 爬虫的分类 通用爬虫:把一整张页面源码数据进行爬取聚焦爬虫&#xff1…

Android 音频开发——Audio概览(八)

Audio 是 Android 系统中比较重要的一个模块,在 Android 中负责音频方面的数据流传输和控制功能,也负责音频设备的管理。 一、系统架构 Android 音频架构定义了音频功能的实现方式,并指出实现中所涉及的相关源代码。 应用框架 应用框架包含应用代码,该代码使用 android.me…

PPPoE工作原理

协议原理 数字用户线路DSL(Digital Subscriber Line)是以电话线为传输介质的传输技术,人们通常把所有的DSL技术统称为xDSL,x代表不同种类的数字用户线路技术。目前比较流行的宽带接入方式为ADSL,ADSL是非对称DSL技术,使用的是PPPoE(PPP over Ethernet)协议。 PPPoE(PPP…

tcp cubic 与随机丢包

前面提到过一个 AIMD 的修正方法,“二次机会 MD”:首次丢包只 MD 收缩一个相对较小的比例,再次丢包时再继续收缩,直到 beta * Wmax。 效果如下图: 大意是在检测到丢包时,先 MD 一个相对小的缩放比例&…

电脑缺少msvcp140.dll怎么办,缺少msvcp140一键修复方法

电脑缺少msvcp140.dll怎么办?这个问题相信不少小伙伴都遇到过,msvcp140.dll文件是很多软件跟游戏运行必须用到的文件,如果丢失或者损坏,很多软件都会无法打开运行。其实知道知道方法,修复起来其实也不会很难&#xff0…

路由器配置方法(固定地址)

前言 由于学校给分配了IP地址,因此我们的路由器接入的时候不能选择自动接入方式,而要选择固定地址方式。 step 1 我们首先先将路由器接上网线,这里注意一定要接wan口 因为路由器分为两个口,wan口是入口,lan口是出口…

我们花一个月调研了小红书种草的新机会和增长策略

分析师:Jane、彬超 编辑:yolo 出品:增长黑盒研究组 *本报告为增长黑盒独立研究系列, 与第三方不存在任何利益关系 随着618的临近,小红书再次成为了品牌重要的“营销战场”。面临着经济环境的不确定性,想必各…