前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Golang交叉编译(跨平台编译)的使用

Golang交叉编译(跨平台编译)的使用

作者头像
微客鸟窝
发布于 2022-05-24 05:02:16
发布于 2022-05-24 05:02:16
4.3K00
代码可运行
举报
文章被收录于专栏:Go语言指北Go语言指北
运行总次数:0
代码可运行

在CMD命令行中编译

设置Linux编译环境

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SET CGO_ENABLED=0
set GOARCH=amd64
set GOOS=linux

// 开始编译
go build -o ./build/ ./main.go
在windows10之前的系统版本上使用cmd命令行可以使用上述命令编译

powershell命令行中

在powershell命令行中编译(示例编译64位linux程序)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 设置Linux编译环境
$env:CGO_ENABLED="0"
$env:GOOS="linux"
$env:GOARCH="amd64"

// 开始编译
go build -o ./build/ ./main.go

一、CGO_ENABLED

作用:

用于标识(声明) cgo 工具是否可用

意义:

存在交叉编译的情况时,cgo 工具是不可用的。在标准 go 命令的上下文环境中,交叉编译意味着程序构建环境的目标计算架构的标识与程序运行环境的目标计算架构的标识不同,或者程序构建环境的目标操作系统的标识与程序运行环境的目标操作系统的标识不同

关闭 cgo 后,在构建过程中会忽略 cgo 并静态链接所有的依赖库,而开启 cgo 后,方式将转为动态链接

二、GOOS

用于标识(声明)程序构建环境的目标操作系统

如:linux 、windows

三、GOARCH

用于标识(声明)程序构建环境的目标计算架构,若不设置,默认值与程序运行环境的目标计算架构一致

系统

GOOS

GOARCH

Windows 32 位

windows

386

Windows 64 位

windows

amd64

OS X 32 位

darwin

386

OS X 64 位

darwin

amd64

Linux 32 位

linux

386

Linux 64 位

linux

amd64

四、GOHOSTOS

用于标识(声明)程序运行环境的目标操作系统

五、GOHOSTARCH

用于标识(声明)程序运行环境的目标计算架构

六、go build

  • -a强制重新编译,简单来说,就是不利用缓存或已编译好的部分文件,直接所有包都是最新的代码重新编译和关联
  • -installsuffix
    • 作用:在软件包安装的目录中增加后缀标识,以保持输出与默认版本分开
    • 补充:如果使用 -race 标识,则后缀就会默认设置为 -race 标识,用于区别 race 和普通的版本
  • -o指定编译后的可执行文件名称

后台运行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//修改权限命令
chmod 777 程序名称

//后台运行的命令
nohup ./程序名 & 

//不输出错误信息
nohup ./程序名 >/dev/null 2>&1 &

//如果要关闭程序,可以使用命令”ps” 查看后台程序的pid,然后使用“kill 程序pid”命令,关闭程序比如程序名为test,可以用如下命令查询

ps aux|grep test

//关掉进程
kill 进程编号

//开机启动glang
vi /etc/rc.local
cd gopath
nohup ./main &

1.nohup

  1. 用途:不挂断地运行命令。
  2. 语法:nohup Command [ Arg … ] [ & ]
  • 无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。
  • 如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。
  • 如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。
  1. 退出状态:该命令返回下列出口值:
  • 126 可以查找但不能调用 Command 参数指定的命令。
  • 127 nohup 命令发生错误或不能查找由 Command 参数指定的命令。
  • 否则,nohup 命令的退出状态是 Command 参数指定命令的退出状态。

2. &

用途:在后台运行

一般两个一起用

nohup command &

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
nohup redis-server ./main >/dev/null 2>&1 &

查看运行的后台进程

(1)jobs -l

(2)ps -ef

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ps -aux|grep test.js
  • a: 显示所有程序
  • u: 以用户为主的格式来显示
  • x: 显示所有程序,不以终端机来区分

3. windows上

windows 上面用

go build -ldflags "-s -w -H=windowsgui"

  • -s 省略符号表和调试信息
  • -w Omit the DWARF symbol table 省略DWARF符号表
  • -H windowsgui 不打印信息到console (On Windows, -H windowsgui writes a "GUI binary" instead of a "console binary."),就不会有cmd窗口了

curl 命令测试

curl发送参数名字username 和pwd 是页面定义的两个参数名字,form1 是页面定义的表单的名字。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl  -d "username=test&pwd=123456"  http://serverIP/webAuth/index.htm/form1

图片及部分相关技术知识点来源于网络搜索,侵权删!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-04-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微客鸟窝 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
原 Golang 的跨平台交叉编译浅析
什么是跨平台交叉编译 交叉编译 通俗地讲就是在一种平台上编译出其他几个平台能够运行的程序(通常指系统和CPU架构的不同) 交叉编译通常使用在分发时,编译出多个平台可用的二进制程序,比如在Linux下编译出可以在Win下可以使用的EXE程序。 本地编译 本地编译是指当前系统所配置编译器根据当前系统配置编译出在当前系统所适用的执行程序(部分其他语言本地编译时可能会由于扩展包含的问题,无法在同平台其他机器运行)。 所以如果要生成在非本机的其他平台和系统的程序,就需要用到交叉编译(交叉编译工具链)。 交叉编译工具链
霡霂
2018/06/04
2.3K0
Golang交叉编译
Golang 支持交叉编译,在一个平台上生成另一个平台的可执行程序,最近使用了一下,非常好用,这里备忘一下。
潇洒哥和黑大帅
2019/04/01
2.7K0
Go学习笔记:golang交叉编译
(1)首先进入go/src 源码所在目录,执行如下命令创建目标平台所需的包和工具文件。 $ cd /usr/local/go/src $ CGO_ENABLED=0 GOOS=linux GOARCH=amd64 ./make.bash 如果是 Windows 则修改 GOOS 即可。 $ CGO_ENABLED=0 GOOS=windows GOARCH=amd64 ./make.bash (2) 现在可以编译 Linux 和 Windows 平台所需的执行文件了。 $ CGO_ENABLED=0 GOO
李海彬
2018/03/20
1.8K0
The Things Network LoRaWAN Stack V3 学习笔记 1.3 交叉编译生成Linux程序
为了测试 NS,本尊在腾讯云上买了一个CVM,1核1G。编译的时候发现居然出现了内存溢出,不得不琢磨下交叉编译。顺便感受下 GO 跨平台的亮点特色。
twowinter
2020/04/17
5550
手把手教你实现Golang跨平台编译
上面的文章,我们已经搭建了Go语言环境,可以戳这里:手把手带你进行Golang环境配置,还实现了第一个Go程序,本次我们来安排一下如何实现跨平台编译。
Go进阶者
2021/01/22
15.6K0
手把手教你实现Golang跨平台编译
上面的文章,我们已经搭建了Go语言环境,可以戳这里:手把手带你进行Golang环境配置,还实现了第一个Go程序,本次我们来安排一下如何实现跨平台编译。
Python进阶者
2021/08/28
8710
由一条编译报错信息,引出两个Go编译的重要知识
最近调研了一下某个做 APM 的厂商的 Go 探针程序,说是引入一个包,全程不用再修改其他代码就能在项目里引入探针。没想到在刚引入包试着构建了一下就翻车了。
KevinYan
2021/11/30
1.1K0
由一条编译报错信息,引出两个Go编译的重要知识
深入了解 Golang 多架构编译:交叉编译最佳实践
随着软件开发领域的不断发展,我们面临着越来越多的挑战,其中之一是如何在不同的平台和架构上部署我们的应用程序。Golang(Go)作为一种现代化的编程语言,具有出色的跨平台支持,通过其强大的多架构编译功能,可以轻松实现在各种操作系统和硬件架构上的部署。本文将深入探讨 Golang 多架构编译的原理、方法以及示例。
xcbeyond
2024/06/05
1.8K0
深入了解 Golang 多架构编译:交叉编译最佳实践
Go语言交叉编译,跨平台执行
程序交叉编译后就可以在各操作系统执行,非Java或Python依赖虚拟机,Go编译后不依赖虚拟机。
助安社区
2023/03/05
1.7K0
Golang - 从源码到二进制:探索在国产CPU架构上交叉编译Minio的方法
交叉编译是指在一台主机上为另一种不同架构或操作系统的目标平台生成可执行程序或库。在C++中,交叉编译通常用于在开发机器上编译目标平台的程序,例如在使用x86架构的开发机器上编译ARM架构的程序。
小小工匠
2024/05/26
9080
Golang - 从源码到二进制:探索在国产CPU架构上交叉编译Minio的方法
[Go] Windows/Linux/Mac交叉编译成指定系统的二进制可执行文件
一般我们在windows获取mac开发代码 , 编译的时候如果要编译成指定系统的二进制文件 , 这时就需要使用交叉编译
唯一Chat
2021/04/20
7K0
我在暴躁同事小张的胁迫下学会了Go的交叉编译和条件编译
今天继续关于Go开发经验的分享,这次的主题是关于Go的交叉编译和条件编译,伴随着我对自己打不过、惹不起的壕同事小张还有运维们的碎碎念。
KevinYan
2020/09/27
2.8K0
我在暴躁同事小张的胁迫下学会了Go的交叉编译和条件编译
go build 交叉编译
作者:matrix 被围观: 10 次 发布时间:2023-02-10 分类:Golang | 无评论 »
HHTjim 部落格
2023/02/13
2.3K0
【保姆级教程】Docker服务在双架构(X86和ARM)编译统一实践
在现代计算机系统中,X86和ARM64是两种常见的处理器架构。为了满足不同架构的需求,Docker镜像也需要支持双架构编包形式。本文将介绍Docker镜像双架构编包统一的实践
粲然忧生
2023/10/12
2.2K0
【保姆级教程】Docker服务在双架构(X86和ARM)编译统一实践
go 编译执行文件分发
今天咱们不说go的语法知识,为什么不说语法了呢?因为咱们做了这么就的go东西全是在编辑器中运行的,大家是不是很想知道怎么在编辑器之外去执行go程序呢?(win的.exe文件 linux ./xx)…
大话swift
2019/07/19
1.6K0
【保姆级教程】Docker服务在双架构(X86和ARM)编译统一实践
在现代计算机系统中,X86和ARM64是两种常见的处理器架构。为了满足不同架构的需求,Docker镜像也需要支持双架构编包形式。本文将介绍Docker镜像双架构编包统一的实践
粲然忧生
2023/04/01
8.3K0
【保姆级教程】Docker服务在双架构(X86和ARM)编译统一实践
如何优雅的把Go项目部署到Linux服务器?
我们在开发环境如果要马上看到效果,并且不用考虑进程中断的问题,可以使用kill -9强制结束进程,
王中阳Go
2022/10/26
2.8K0
Go打包和部署:从编译到运行的全指南
今天我们来聊聊Go语言项目如何打包和部署。无论你是初学者还是资深开发者,了解如何将你的代码打包成可执行文件,并在不同环境下部署运行,都是一项非常重要的技能。
南山竹
2024/06/06
2.4K0
Go打包和部署:从编译到运行的全指南
一款用GO语言编写的JS爬取工具~
功能类似于JSFinder,开发由来就是使用它的时候经常返回空或链接不全,作者还不更新修bug,那就自己来咯
天钧
2022/12/18
1.8K0
一款用GO语言编写的JS爬取工具~
Windows里golang交叉编译Linux文件在docker里的centos中运行
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hotqin888/article/details/79588773
hotqin888
2018/09/11
3.3K0
Windows里golang交叉编译Linux文件在docker里的centos中运行
推荐阅读
相关推荐
原 Golang 的跨平台交叉编译浅析
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验