首页 > 其他分享 >golang初学:交叉编译

golang初学:交叉编译

时间:2024-05-02 21:34:36浏览次数:28  
标签:web001 amd64 golang 编译 初学 GOOS build linux go

go version go1.22.1 windows/amd64

Windows 11 + amd64

x86_64 x86_64 GNU/Linux

---

 

序章

golang 支持 跨平台,支持的方式 是 在一个平台 编译其它平台的可执行程序。

本文 介绍 Windows 11(开发主机) 上 编译 Linux(目标主机) 上的可执行程序。

 

#go build

 

开发主机 和 目标主机 的架构相同:x86_64

 

执行

查看 go 环境变量:

> go env

set GO111MODULE=on
set GOARCH=amd64

set GOHOSTARCH=amd64
set GOHOSTOS=windows

set GOOS=windows

……

 

修改其中的 GOOS 为 linux(全小写),命令:

>go env -w GOOS="linux"

 

执行编译:

>go build

编译 成功,生成 web001 文件——Linux 可执行的。

 

 

拷贝 web001 到 目标主机(scp 命令):

scp web001 username@iporhost:/target/directory

成功拷贝过去后,web001 是 不可执行的,使用 chmod 修改权限即可:

# chmod +x web001

 

执行&测试 web001:

# nohup ./web001 &
# ps -ef | grep web
root      439426  439378  0 20:31 pts/1    00:00:00 ./web001

web001 是一个 web程序,使用 curl 测试接口,成功,不再赘述。

 

改名

将 web001 改名为 app001,运行,成功。

 

就这么简单?

 

TODO 除了 amd64(x86_64)外,还支持那些架构呢?看了 go help build 命令的内容,应该还支持下面的 os+芯片架构 组合:

Supported only on

linux/amd64, freebsd/amd64, darwin/amd64, darwin/arm64, windows/amd64,
linux/ppc64le and linux/arm64 (only for 48-bit VMA).

两个 *asn 还提到了:linux/loong64(龙芯)。

还没用过这些参数。

 

说明,介绍 GOOS、GOARCH 的 官方文档 今天看到过,但现在 找不到了。

 

命令小结

  • >go env -w GOOS="linux"
    >go build
    >scp web001 username@iporhost:/target/directory
  • # chmod +x web001
    # nohup ./web001 &
    # ps -ef | grep web
    # curl

 

---END---

 

本文链接:

https://www.cnblogs.com/luo630/p/18170501

ben发布于博客园

参考资料

1、go build 成不同环境的方法:mac、linux、windows
php-goland@疯狂编程爱好者
已于 2022-10-10 17:20:11 修改
https://blog.csdn.net/qq_41672878/article/details/119410602

2、Win10系统下设置Go环境变量
https://www.cnblogs.com/yunfan1024/p/13497686.html

3、

 

ben发布于博客园

ben发布于博客园

 

标签:web001,amd64,golang,编译,初学,GOOS,build,linux,go
From: https://www.cnblogs.com/luo630/p/18170501

相关文章

  • html,js代码编译,加密,代码一键打包软件,HTML转exe程序
    个人软件注意杀毒软件会报毒,,放行便可小尘web打包程序可以将整个web工程项目打包成一个exe程序运行不是打包浏览器内核应用,是代码打包软件,打包后和原来一样放在nginx类软件里运行下载地址https://download.csdn.net/download/rllmqe/88789653链接:https://pan.baidu.com/s/1HTql......
  • android 反编译APK取源代码。
    坑,自己写的AndroidAPK程序,发现线上版本是1.9.4,本地的代码版本却是1.9.1。不知道到底怎么回事,svn里面也没有日志记录。。。。。只能从线上apk反编译来看看了,幸好这个升级日志里面,更新内容很少。。。。。真的是诡异 反编译过程如下,其他地方转来的,仅做记录用,方便自己以后按这......
  • ffmpeg不同平台的一些编译脚本
    build-x86-64.sh:#!/bin/sh#编译后输出目录,在ffmpeg源码目录下的/android/arm64-v8aOUTPUT=$(pwd)/x86_64-linux/x64build(){./configure\--disable-x86asm\--prefix=$OUTPUT\--disable-static\--disable-debug\--disable-doc\--enable-shared\--en......
  • 【发现一个小问题】golang http client: 配置了Client 对象的 Timeout 就会导致 conte
    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢!cnblogs博客zhihuGithub公众号:一本正经的瞎扯我这样初始化了客户端:varclient=http.Client{Timeout:time.Duration(1000)*time.Millisecond,}然后在request创建过程中使用了context的timeout机制:tim......
  • Qt Creator + MSVC2017编译器配置指南
    QtCreator+MSVC2017编译器配置指南下载和安装MSVC2017编译器下载下载MSVC编译器安装工具:https://docs.microsoft.com/zh-tw/previous-versions/visualstudio/visual-studio-2017/install/use-command-line-parameters-to-install-visual-studio?view=vs-2017安装安......
  • 转载golang中net/http包用法
    转自:https://studygolang.com/articles/55151.前言http包包含http客户端和服务端的实现,利用Get,Head,Post,以及PostForm实现HTTP或者HTTPS的请求.2.本文分析内容安排函数结构3.函数3.1服务端函数funcHandle(patternstring,handlerHandler)将handler按照指定的......
  • vue.js 3 初学经验:开发环境搭建,Windows,nginx
    Windows11nginx-1.20.0"vue":"^3.4.21"--- 序章vue3开发,不需要后端服务业是可以的。在需要后端服务时,使用nginx来转发请求是很好的(个人开发者)。 注,还有什么其它方式吗?注,本文的后端服务是使用Java开发的HTTP接口。注,参考资料#2介绍了多个vue.js3.0项目......
  • 在Linux系统下用命令行编译调试C++
    在Linux系统下用命令行编译调试C++目录在Linux系统下用命令行编译调试C++一、编译1.单文件编译2.多文件编译3.链接第三方动态库二、调试1.启动和退出2.查看源代码:list/l3.断点:breakpoint/br、watchpoint4.单步、步入、跳出5.计算表达式命令:expression/expr、p、po6.操作......
  • react 初学遇到的问题
    1.useEffect依赖项变化时并没有执行源码useEffect(()=>{constselectedComp=selects.find(select=>select.value===selected);selectedComp&&setSelectedComp(selectedComp);},[selected,selects,selectedComp]);分析从提供的代码片段来看,这一行代码......
  • golang将uint32与byte[]互转
    packagemainimport( "encoding/binary" "fmt")funcmain(){ //一个长度为4的byte切片,表示一个负数 bytes:=[]byte{0xFF,0xFF,0xFF,0xFF} //将byte切片转换为int32 num:=int32(binary.BigEndian.Uint32(bytes)) fmt.Printf("Byte切片转换为Int32:%d......