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

news2024/12/26 22:46:57

输出该问题时说明在 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.coloradmin.cn/o/506484.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【iOS开发】理解OC的类,父类,元类的关系

文章目录 前言1.1 类和对象的关系2.1 类的结构体2.2对象的结构体2.2.1元类2.2.2 涉及消息转发机制2.2.3 元类也有类2.3.4 对象和Class的 isa指针 前言 在OC中,有对象objc,有类Class,有父类SuperClass,其实还有一种元类MetaClass。…

嚯——ChatGPT是很强,但也会胡说八道。。。

现在的ChatGPT确实强,但是也会一本正经的胡说八道,例如它回答“nineteen”中有12个字母、或是旗鱼是哺乳动物…… 尽管ChatGPT可以生成流畅甚至优雅的散文,轻松通过困扰了AI领域超过70年的图灵测试基准,但它也可能看起来非常愚蠢…

【设计模式】| 修炼内功 | 23种设计模式——单例模式

设计模式如同织锦之艺术,精心构筑,展示优美。 学习设计模式,犹如追逐清晨的曙光,扉页掀开了人生的新篇章。当你学会设计模式的奥秘,就如同走进了灯火通明的城市,丰富多彩的建筑,让你大开眼界&am…

Postman安装及入门接口测试使用步骤

前言 在软件测试行业中,作为一款比jemter更便捷更好用的软件测试工具,postman以其便捷灵活性首当其冲,成为当今测试行业领域使用较广泛的主流系统软件接口测试工具。今天Darren洋为大家讲解postman这款软件测试工具的下载安装及入门接口测试步…

Sentinel实现动态配置的集群流控的方法

Sentinel实现动态配置的集群流控的方法 介绍 06-cluster-embedded-8081 为什么要使用集群流控呢? 相对于单机流控而言,我们给每台机器设置单机限流阈值,在理想情况下整个集群的限流阈值为机器数量✖️单机阈值。不过实际情况下流量到每台…

拉绳位移传感器连接到PLC并采集数据到物联网云平台

拉绳位移传感器是一种利用绳材收卷轮周长来计量物体长度或距离的传感器设备,其作用就像是一把卷尺,通过拉绳的长度变化测出位移量,并转换为数字量提供到电子信息系统中,在建筑、水利、地质勘察、采矿、制造加工以及渔业等广泛应用…

elementUI中折叠面板箭头图标位置调整到最左边

跟flex布局有关 原始代码 <div id"app"> <el-collapse v-model"activeNames" change"handleChange"><el-collapse-item title"一致性 Consistency" name"1"><div>与现实生活一致&#xff1a;与现…

Centos8下编译安装最新版ffmpeg解决方案(含Centos8换源阿里云)

文章目录 1、下载FFmpeg源代码2、安装依赖3、配置编译选项&#xff08;关键&#xff09;linux依赖手动编译安装centos8换源阿里云 4、编译源代码5、安装FFmpeg6、验证安装 1、下载FFmpeg源代码 FFmpeg官网&#xff08;https://ffmpeg.org/download.html&#xff09;git clone …

python数据分析案例——天猫订单综合分析

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 什么是数据分析 明确目的–获得数据(爬虫&#xff0c;现有&#xff0c;公开的数据)–数据预处理——数据可视化——结论 准备 环境使用&#xff1a; 在开始写我们的代码之前&#xff0c;我们要准备好运行代码的程序 Anacon…

Java Stream API的基本使用方法

前言 Java各个版本所更新的主要内容&#xff1a; 1.Java SE 8&#xff1a;引入了一些新特性&#xff0c;如lambda表达式、Stream API、格式化日期、国际化等。此外&#xff0c;还对并发编程进行了改进&#xff0c;引入了线程安全的Stream API。 2.Java SE 9&#xff1a;新增了…

李沐论文精度系列之十:GPT-4

文章目录 一、AIGC资讯速览1.1 Toolformer&#xff08;2023.2.9&#xff09;1.2 ChatGPT plugin1.3 LLaMA&#xff08;2023.2.24&#xff09;1.4 Visual ChatGPT&#xff08;2023.3.8&#xff09;1.5 GigaGAN&#xff08;2023.3.9&#xff09;1.6 Stanford Alpaca&#xff08;2…

面试官:详细说一下Java语言层面3种IO模型的实现

在Java中&#xff0c;一共有三种IO模型&#xff0c;分别是阻塞IO(BIO)、非阻塞IO(NIO)和异步IO(AIO)。 Linux五种IO模型和Java三种IO模型 Java BIO Java BIO就是Java的传统IO模型&#xff0c;对应了操作系统IO模型里的阻塞IO。 Java BIO相关的实现都位于java.io包下&#xf…

ECMA 各版本特性汇总

&#xff08;走运时,要想到倒霉&#xff0c;不要得意得过了头&#xff1b;倒霉时,要想到走运&#xff0c;不必垂头丧气。心态始终保持平衡&#xff0c;情绪始终保持稳定&#xff0c;此亦长寿之道。。——季羡林&#xff09; ECMA ecma官方网站 ecma github版本记录 w3schools …

由浅入深,聊聊OkHttp的那些事(易懂,不繁琐)

作者&#xff1a;Petterp 引言 在 Android 开发的世界中&#xff0c;有一些组件&#xff0c;无论应用层技术再怎么迭代&#xff0c;作为基础支持&#xff0c;它们依然在那里。 比如当我们提到网络库时&#xff0c;总会下意识想到一个名字&#xff0c;即 OkHttp 。 尽管对于大…

LVS和nginx和keepalived四层和7层的一些测试,nginx和keepalived共用环境的部署,lvs,nginx客户端IP透传

LVS和nginx的测试 实验DR模式 服务器IP备注mysql192.168.137.178测试服务器lvs**vip ** 192.168.137.99 RIP 192.168.137.100lvs服务器nginx1RIP 192.168.137.101nginx2RIP 192.168.137.102 LVS四层代理 test----lvs vip—nginx1/ngin2 LVS服务器的配置 [rootlvs openres…

Databend 开源周报第 92 期

Databend 是一款现代云数仓。专为弹性和高效设计&#xff0c;为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务&#xff1a;https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展&#xff0c;遇到更贴近你心意的 Databend 。 在 WHERE 子句中…

算法记录 | Day56 动态规划

583.两个字符串的删除操作 思路&#xff1a; 1.确定dp数组&#xff08;dp table&#xff09;以及下标的含义&#xff1a;dp[i][j]&#xff1a;以i-1为结尾的字符串word1&#xff0c;和以j-1位结尾的字符串word2&#xff0c;想要达到相等&#xff0c;所需要删除元素的最少次数…

别去外包,干了3年,彻底废了......

先说一下自己的情况。大专生&#xff0c;19年通过校招进入湖南某软件公司&#xff0c;干了接近3年的测试&#xff0c;今年年上旬&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落&#xff01;而我已经在一个企业干了三年&#xff0c…

存储迁移到vSAN后将oracle rac的共享虚拟磁盘由“精简置备”转换为“厚置备快速置零”格式

在vSAN 6.5.0环境中&#xff0c;将Oracle RAC虚拟机的存储迁移到vSAN数据存储后&#xff0c;共享磁盘在迁移后全部变成了“精简置备”类型&#xff0c;如下所示&#xff1a; 注&#xff1a;从vSAN 6.7 Patch 01开始&#xff0c;vSAN上的Oracle RAC 不再要求共享的 VMDKs为厚置…

【论文阅读】COPA:验证针对中毒攻击的离线强化学习的稳健策略

COPA: Certifying Robust Policies for Offline Reinforcement Learning against Poisoning Attacks 作者&#xff1a;Fan Wu, Linyi Li, Chejian Xu 发表会议&#xff1a;2022ICRL 摘要 目前强化学习完成任务的水平已经和人类相接近&#xff0c;因此研究人员的目光开始转向…