IBM Z环境编译promrus包报undefined: logrus.Level错误如何解决
z/OS平台编译promrus包报错解决方案
- 修正构建约束格式:Go 1.16要求构建约束语法为
// +build zos(加号前后需保留空格),且约束行和package声明之间必须保留空行,否则构建约束不会生效,调整后的代码头应该为:
// +build zos package promrus import ( "github.com/prometheus/client_golang/prometheus" "github.com/sirupsen/logrus" )
- 检查logrus依赖的平台适配:报错
undefined: logrus.Level的核心原因是vendor目录下的logrus版本没有适配z/OS平台,Level类型的定义被非z/OS的构建约束屏蔽了。可以直接修改vendor下github.com/sirupsen/logrus/level.go文件,删除该文件头部排除z/OS的构建约束,或者将zos加入到支持的平台列表中。 - 确认编译参数:编译时显式指定目标平台参数
GOOS=zos GOARCH=s390x,避免默认本地环境参数导致的编译异常。 - 清理缓存重新编译:修改完成后执行
go clean -cache清理本地编译缓存,再重新执行编译命令即可。
内容的提问来源于stack exchange,提问作者Siva
相关产品推荐
相关产品推荐

