golang windows打包为linux可执行文件

使用go的交叉编译功能

set GOOS=linux
set GOARCH=amd64

然后再执行go build

可能会报异常, 所以贴出我的go env配置仅供参考

go env环境配置
D:\GoWork\src\go-tzv>go env
set GO111MODULE=auto
set GOARCH=amd64                              
set GOBIN=                                    
set GOCACHE=E:/GoSet/GoCache                  
set GOENV=C:\Users\rd18\AppData\Roaming\go\env
set GOEXE=
set GOEXPERIMENT=
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOINSECURE=
set GOMODCACHE=D:\GoWork\pkg\mod
set GONOPROXY=
set GONOSUMDB=
set GOOS=linux
set GOPATH=D:\GoWork
set GOPRIVATE=
set GOPROXY=https://goproxy.cn,direct
set GOROOT=D:/Golang/gvm/go
set GOSUMDB=sum.golang.org
set GOTMPDIR=
set GOTOOLCHAIN=auto
set GOTOOLDIR=D:\Golang\gvm\go\pkg\tool\windows_amd64
set GOVCS=
set GOVERSION=go1.21.7
set GCCGO=gccgo
set GOAMD64=v1
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=0
set GOMOD=D:\GoWork\src\go-tzv\go.mod
set GOWORK=
set CGO_CFLAGS=-O2 -g
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-O2 -g
set CGO_FFLAGS=-O2 -g
set CGO_LDFLAGS=-O2 -g
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-fPIC -m64 -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=C:\Users\rd18\AppData\Local\Temp\go-build582731005=/tmp/go-build -gno-record-gcc-switches

家里电脑的go env环境经过与公司电脑对比发现我本机的CGO_ENABLED=1, 与公司电脑环境配置不一致.
修改之后正常

go env -w CGO_ENABLED=0

windows打包和使用windows交叉编译为linux包都正常
在这里插入图片描述

附带说明:

CGO_ENABLED 是一个环境变量,在Go语言环境中使用时,它控制着是否启用cgo支持。cgo是一个允许Go代码调用C语言库的工具,这对于需要访问底层系统功能或者利用现有的C库功能的Go程序非常有用。

当 CGO_ENABLED 的值为:

1:表示启用cgo支持。在编译时,Go编译器会允许通过import "C"引入C代码,并在生成的输出中包含C语言部分的编译和链接。

0:表示禁用cgo支持。这将阻止Go程序在编译时链接任何C代码,从而可能减少最终可执行文件的大小,简化部署,并避免与C库的兼容性问题,但同时也意味着不能使用那些依赖cgo的包或功能。

在进行交叉编译时,正确设置 CGO_ENABLED 非常重要,因为它影响到目标平台上的二进制文件能否正确地链接到C库。例如,当你从Linux编译针对Windows的Go程序时,可能需要设置 CC 和 CXX 环境变量指向对应的交叉编译器,并且根据情况决定是否开启 CGO_ENABLED。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/30142.shtml

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

相关文章

寄存器和存储器的区别与联系

在计算机系统中,寄存器和存储器是两个重要的概念,它们在数据存储和处理过程中扮演着不同但互补的角色。本文将详细讨论寄存器和存储器的区别与联系。 1. 基本概念 **寄存器(Register)**是一种速度极快的小容量存储单元&#xff…

Maven 插件列表详解

Maven 是一个强大的项目管理和构建工具,广泛应用于 Java 项目中。作为一款优秀的构建管理工具,Maven 不仅提供了标准化的项目结构和依赖管理,还通过其丰富的插件系统,极大地扩展了其功能和灵活性。无论是代码编译、测试、打包&…

2024级中国社科院中外合作办学双证博士和英国斯特灵的管理学博士

2024级中国社科院中外合作办学双证博士和英国斯特灵的管理学博士 中国社科院-英国斯特灵大学合办的创新与领导力博士项目(DOCTOR OF MANAGEMENT 简称“DMAN”)是中国社会科学院大学(中国社会科学院研究生院)第一个博士层次的中外…

Win 10/Win 11 共享/远程访问的后续设置以及如何查看电脑的账户密码

共享设置 如何给文件设置共享这里不谈,右键属性添加共享,类似的教程也有很多(如果这步都搞不定建议就不要折腾了,老老实实的用U盘吧) 如果不出意外的话,你在网络界面是看不到共享pc和文件的 这时候需要两…

【VS2022 编译UE5.1 错误 C4834 】

这里写自定义目录标题 错误 错误 使用VS2022编译UE5.1源码,错误 C4834 放弃具有 [[nodiscard]] 属性的函数的返回值 F:\UE\Engine\Plugins\Runtime\Steam\SteamVR\Source\SteamVRInputDevice\Private\SteamVRInputDeviceFunctionLibrary.cpp(513): error C4834: d…

python jieba中文文本切割成句子

# -*- coding: utf-8 -*- # Time : 2024/6/18 10:26 # Author : Cocktail_py import jieba.posseg as psegdef cut_sentences(text):"""中文句子分割"""# 使用jieba的分句模块sentences pseg.cut(text)result []tmp []for word, flag in …

要颜值有颜值,有性价比有性价比,华硕天选键、鼠组合分享

作为ROG产品的忠实粉丝,用过不少ROG 相关的产品,近期华硕天选TX98和天选MINI 鼠标的发布,独特配色令我眼前一亮。 华硕天选TX98键盘,作为新品,从看上的第一眼就觉得这款键盘是非常值得推荐。 它完美地诠释了潮玩新次元…

亲测:无影云电脑免费三个月已经缩短为1个月

亲测:无影云电脑免费三个月已经缩短为1个月,大家不要再找3个月的无影云电脑,已经没有了,目前最新消息是1个月。以前可以领3个月,现在只能领1个月,在阿里云免费中心 https://free.aliyun.com/ 大家自己看吧&…

光伏电站管理app,一站式管理,一体化接单

早在1839年,法国科学家贝壳雷尔就发现了“光伏效应”,随后诞生了“光学发电”技术。随着现代化与工业化的不断发展、进步,出于资源再生与保护环境的需要,人们越来越重视光伏发电技术,也越来越追求光伏电站的智能化管理…

JavaScript------const

这里写目录标题 介绍在声明时赋值不是真正的常数常量对象可以更改常量数组可以更改 介绍 ES2015 引入了两个重要的 JavaScript 新关键词:let 和 const。 通过 const 定义的变量与 let 变量类似,但不能重新赋值: const PI 3.1415926535897…

Java中的运算符及其示例

Java中的运算符及其示例 运算符是指示编译器执行特定操作的符号。例如,“”运算符指示编译器执行加法,“>”运算符指示编译执行比较,“”用于赋值等等。在本指南中,我们将借助示例讨论java中的操作。 运算符和操作数&#…

钽掺杂锂镧锆氧(LLZTO)是优秀固态电解质 未来行业前景良好

钽掺杂锂镧锆氧(LLZTO)是优秀固态电解质 未来行业前景良好 钽掺杂锂镧锆氧,也称为锂镧锆钽氧,英文简称LLZTO,外观为白色或淡黄色结晶粉末状。LLZTO具有锂离子电导率高、对锂化学性质稳定等特点,是一种立方晶…

C++迈向精通:函数指针对象与函数对象

C:指针对象 C语言中的函数指针 在C语言中,我们见过如下的函数指针: int add(int a, int b) {return a b; }int main() {int a, b;int (*p)(int, int) add;scanf("%d%d", &a, &b);p(a, b);return 0; } 为了适应C中面向…

BPE (Byte-Pair Encoding) Tokenization

目录 一、Tokenization 的概念二、BPE 的概念三、BPE 的步骤 遇到看不明白的地方,欢迎在评论中留言呐,一起讨论,一起进步! 需掌握的前提知识: 本文参考: P24 台大资讯 2023秋季 深度学习之应用 &#xff5…

mybatis使用注解形式实现一对多、多对多查询(转载)

1、链接:一对一,一对多 2、多对多 原文 MyBatis的注解实现复杂映射开发 实现复杂关系映射之前我们可以在映射文件中通过配置来实现,使用注解开发后,我们可以使用Results注解,Result注解,One注解&#x…

Java学习笔记之基本数据类型转换

前言 本篇文章是基于我本人在初学JAVA阶段想记录的的学习笔记,如有错误,恳请指正。今天要干掉的是JAVA的基本数据类型转换。 笔记目录一览 前言一,基本数据类型复习二,基本介绍什么是自动类型转换? 三,任…

nvidia-smi命令详解

参考: https://zhuanlan.zhihu.com/p/664550672 NVIDAI-SMI Version 版本号; Driver Version 驱动版本号; CUDA Version 版本号; GPU 型号及序号; 风扇; 温度; Perf 性能状态; Pers…

达梦数据库的分区表

达梦数据库的分区表 达梦数据库(DM Database)提供了灵活和强大的分区表功能,以更高效地管理和操作大规模数据集。分区表通过将数据分割成更小、更易管理的部分,可以显著提高查询性能、缩短维护时间、并提高系统的总体可扩展性。 …

统计信号处理基础 习题解答10-15

题目 对随机变量的随机性的一个度量是它的熵(entropy),熵定义为: 如果,求这个熵,并说明它与PDF集中度的关系。观察到数据后,后验PDF的熵可以确定为: 且它应该比小。因此&#xff0c…

《无与伦比》Centos7 开放端口

例如我想开放80端口,那么命令就是: firewall-cmd --zonepublic --add-port80/tcp --permanent firewall-cmd --reload centos 关闭防火墙 systemctl stop firewalld.service 查看防火墙状态 firewall-cmd --state centOS7.4 关闭防火墙 systemctl stop f…