我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Golang交叉编译之跨平台编译使用详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Golang交叉编译之跨平台编译使用详解

在CMD命令行中编译

设置Linux编译环境

SET CGO_ENABLED=0
set GOARCH=amd64
set GOOS=linux
//CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7
// 开始编译
go build -o ./build/ ./main.go
在windows10之前的系统版本上使用cmd命令行可以使用上述命令编译

powershell命令行中

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

// 设置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

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

系统GOOSGOARCH
Windows 32 位windows386
Windows 64 位windowsamd64
OS X 32 位darwin386
OS X 64 位darwinamd64
Linux 32 位linux386
Linux 64 位linuxamd64

四、GOHOSTOS

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

五、GOHOSTARCH

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

六、go build

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

后台运行

//修改权限命令
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

用途:不挂断地运行命令。

语法:nohup Command [ Arg … ] [ & ]

  • 无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。
  • 如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。
  • 如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。

退出状态:该命令返回下列出口值:   

  • 126 可以查找但不能调用 Command 参数指定的命令。   
  • 127 nohup 命令发生错误或不能查找由 Command 参数指定的命令。   
  • 否则,nohup 命令的退出状态是 Command 参数指定命令的退出状态。

2. &

用途:在后台运行

一般两个一起用

nohup command &

nohup redis-server ./main >/dev/null 2>&1 &

查看运行的后台进程

(1)jobs -l

(2)ps -ef

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 是页面定义的表单的名字。

curl  -d "username=test&pwd=123456"  http://serverIP/webAuth/index.htm/form1

以上就是Golang交叉编译之跨平台编译使用详解的详细内容,更多关于Golang 跨平台交叉编译的资料请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Golang交叉编译之跨平台编译使用详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

uniapp使用条件编译#ifdef(跨平台设备兼容)

这篇文章主要介绍了uniapp使用条件编译#ifdef(跨平台设备兼容),需要的朋友可以参考下
2022-12-24

Android笔记之:App自动化之使用Ant编译项目多渠道打包的使用详解

随着工程越来越复杂,项目越来越多,以及平台的迁移(我最近就迁了2回),还有各大市场的发布,自动化编译android项目的需求越来越强烈,后面如果考虑做持续集成的话,会更加强烈。 经过不断的尝试,在ubuntu环境下,以花界为例,我将一
2022-06-06

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录