go如何进行交叉编译
go如何进行交叉编译
2018-02-16
文章目录
golang交叉编译
问题
golang如何在一个平台编译另外一个平台可以执行的文件。比如在mac上编译Windows和linux可以执行的文件。那么我们的问题就设定成:如何在mac上编译64位linux的可执行文件。
解决方案
golang的交叉编译要保证golang版本在1.5以上,本解决方案实例代码1.9版本执行的。
我们想要编译的文件hello.go
hello.go
|
|
在mac上编译64位linux的命令编译命令
bash:
|
|
上面这段代码直接在命令控制台里面运行就可以生成64位linux的可执行程序。
参数解析
这里用到了两个变量: - GOOS:目标操作系统 - GOARCH:目标操作系统的架构
OS | ARCH | OS version |
---|---|---|
linux | 386 / amd64 / arm | >= Linux 2.6 |
darwin | 386 / amd64 | OS X (Snow Leopard + Lion) |
freebsd | 386 / amd64 | >= FreeBSD 7 |
windows | 386 / amd64 | >= Windows 2000 |
编译其他平台的时候根据上面表格参数执行编译就可以了。
扩展阅读
在网络上的诸多教程中可能会看到下面的编译命令
|
|
其中CGO_ENABLED=0的意思是使用C语言版本的GO编译器,参数配置为0的时候就关闭C语言版本的编译器了。自从golang1.5以后go就使用go语言编译器进行编译了。在golang1.9当中没有使用CGO_ENABLED参数发现依然可以正常编译。当然使用了也可以正常编译。比如把CGO_ENABLED参数设置成1,即在编译的过程当中使用CGO编译器,我发现依然是可以正常编译的。
实际上如果在go当中使用了C的库,比如import "C"
默认使用go build的时候就会启动CGO编译器,当然我们可以使用CGO_ENABLED=0来控制go build是否使用CGO编译器。
go如何进行交叉编译相关推荐
- Golang的交叉编译问题
参考:Golang交叉编译各个平台的二进制文件 - Go语言中文网 - Golang中文社区 (studygolang.com).也谈Go的可移植性 | Tony Bai 今天准备将一个在Mac上开发 ...
- Linux 交叉编译简介
Linux 交叉编译简介 主机,目标,交叉编译器 主机与目标 编译器是将源代码转换为可执行代码的程序.像所有程序一样,编译器运行在特定类型的计算机上,输出的新程序也运行在特定类型的计算机上. 运行编译 ...
- TVM交叉编译和远程RPC
TVM交叉编译和远程RPC 本文介绍了TVM中使用RPC的交叉编译和远程设备执行. 使用交叉编译和RPC,可以在本地计算机上编译程序,然后在远程设备上运行它.当远程设备资源受到限制时(如Raspber ...
- 用TensorRT针对AArch64用户的交叉编译示例
用TensorRT针对AArch64用户的交叉编译示例 以下介绍如何在x86_64linux下为AArch64 QNX和Linux平台交叉编译TensorRT示例. 2.1. Prerequisite ...
- Go 学习笔记(37)— 标准命令(go build 跨平台编译、交叉编译、go clean、go run、go fmt、go install、go get)
1. 标准命令简述 Go 本身包含来大量用于处理 Go 程序的命令和工具. 命令 作用 build 用于编译指定的代码包或 Go 语言源码文件.命令源码文件会被编译成可执行文件,并存放到命令执行的目录 ...
- linux wifi-tools,Linux下WiFi工具wireless_tools交叉编译,及其支持生成iwconfig使用的内核配置...
内核的配置: General setup ---> Kernel compression mode (LZMA) --->LZMA [*] Networking support -- ...
- Cmake 交叉编译
转载自 http://zhixinliu.com/2016/02/01/2016-02-01-cmake-cross-compile/ CMake交叉编译 CMake的使用,以及如何将一个项目移植到A ...
- Ubuntu 8.04嵌入式交叉编译环境arm-linux-gcc搭建过程图解
Linux版本:Ubuntu8.04 内核版本:Linux 2.6.24 交叉编译器版本:arm-linux-gcc-3.4.1 交叉编译器下载链接: https://share.weiyun.com ...
- Ubuntu上通过android toolchain交叉编译Valgrind操作步骤
关于Valgrind的介绍可以参考:https://blog.csdn.net/fengbingchun/article/details/50196189. 这里介绍下在Ubuntu 16.04上通过 ...
- 【POCO】POCO学习总结(三)——交叉编译
最小功能编译 编译选项:–minimal :只构建XML, JSON, 工具 and 网络 1 修改配置文件 $ vi poco-1.7.8p3-all/build/config/ARM-Linux ...
最新文章
- Kafka的生产者优秀架构设计
- 诺奖得主被曝40多篇论文造假!
- Gson把对象转成json格式的字符串
- C# 对象深拷贝、浅铐贝、直接拷贝(转)
- Golang之slice操作
- 【Python】简单的apscheduler定时任务
- spark 流式计算_流式传输大数据:Storm,Spark和Samza
- 安卓案例:启动和停止服务
- 计算机信息机房,计算机信息中心机房建设标准
- jvm 堆外内存_jvm┃java内存区域,跳槽大厂必会知识点
- Android自定义方式设置drawableleft图片大小
- 深刻理解:无人机数据系统应用
- 被积函数中有x不能直接求导_解析变限积分函数的求导问题
- dockers 赋权
- SQL优化建议(不定时更新添加)
- 【图像去噪】基于matlab小波变换(硬阙值+软阙值)图像去噪【含Matlab源码 391期】
- 【解决问题】修复虚拟机报错,写入文件时出错,请确认您有访问该目录的权限
- 华硕z170a如何开启m2_华硕Z170主板bios如何设置|华硕Z170主板设置bios的方法
- 365值得吗 office_你可能是正版受害者?吐槽Office 365坑爹之处
- celery beat一直不触发任务(卡在Writing entries...)
热门文章
- 关于LabVIEW视觉ROI的读取与存储
- 事件循环机制 + ES7:Async/Await(基于generator原理实现)附详细示例分析
- 栈的应用——表达式求值(双栈)
- @Repository详解
- 关系型数据库 vs 非关系型数据库
- 常用计算机键,计算机快捷键40个_计算机常用快捷键大全分享
- Shell命令-系统信息及显示之dmesg、uptime
- Docker:unauthorized: incorrect username or password.
- 轻松搞定JSONP跨域请求
- window.btoa()方法;使字符编码成base64的形式