美文网首页工作生活
用go来做嵌入式开发-交叉编译和自动版本号

用go来做嵌入式开发-交叉编译和自动版本号

作者: 斗破苍穷 | 来源:发表于2019-06-30 10:47 被阅读0次

用go来做嵌入式开发-交叉编译和自动版本号

  • 嵌入式硬件平台一般是采用arm或者mips等非x86架构,因此需要在编译程序的时候指定目标机器平台
  • 有时候需要在go程序中自动生成版本号和编译日期信息,这个在c和c++中很方便实现有TIMEDATE宏可以实现,那么在go中如何来实现自动插入编译时间和日期啦?

多平台教程编译脚本

  • arm平台

@echo off
set GOARCH=arm
set GOOS=linux
set CGO_ENABLED=0



set dd=%date:~8,2%
set mm=%date:~5,2%
set yy=%date:~0,4%

set Tss=%TIME:~6,2%
set Tmm=%TIME:~3,2%
set Thh=%TIME:~0,2%
set Thh=%Thh: =0%


set BUILD_VERSION=1.0.5
set BUILD_TIME=%yy%-%mm%-%dd%_%Thh%.%Tmm%.%Tss%
set BUILD_NAME=goftpd
set BUILD_PATH=bylib/byutils
echo %BUILD_NAME%%BUILD_VERSION%%BUILD_TIME%
go build -ldflags "-w -s -X %BUILD_PATH%.BuildTime=%BUILD_TIME% -X %BUILD_PATH%.BuildVersion=%BUILD_VERSION% -X %BUILD_PATH%.BuildName=%BUILD_NAME%" -v -o %BUILD_NAME%

::upx -9 %BUILD_NAME%
upx  %BUILD_NAME%
  • mips平台【mt7688,无硬件浮点】

@echo off
set GOARCH=mipsle
set GOOS=linux
set GOMIPS=softfloat
set CGO_ENABLED=0



set dd=%date:~8,2%
set mm=%date:~5,2%
set yy=%date:~0,4%

set Tss=%TIME:~6,2%
set Tmm=%TIME:~3,2%
set Thh=%TIME:~0,2%
set Thh=%Thh: =0%


set BUILD_VERSION=1.0.5
set BUILD_TIME=%yy%-%mm%-%dd%_%Thh%.%Tmm%.%Tss%
set BUILD_NAME=goftpd
set BUILD_PATH=bylib/byutils
echo %BUILD_NAME%%BUILD_VERSION%%BUILD_TIME%
go build -ldflags "-w -s -X %BUILD_PATH%.BuildTime=%BUILD_TIME% -X %BUILD_PATH%.BuildVersion=%BUILD_VERSION% -X %BUILD_PATH%.BuildName=%BUILD_NAME%" -v -o %BUILD_NAME%

::upx -9 %BUILD_NAME%
upx  %BUILD_NAME%

如何自动生成版本号

  1. 定义一个包含版本号信息的通用包 ,建立一个version.go的文件
package byutil



var (
    BuildVersion string
    BuildTime    string
    BuildName    string
)

  1. 在项目中引用该包中的版本号和编译时间变量

var build_info= byutil.BuildVersion+byutil.BuildTime

  1. 编译的时候通过tag传递当前时间和版本号给byutil包中的相关变量,具体参考第一节中的交叉编译脚本

相关文章

  • 用go来做嵌入式开发-交叉编译和自动版本号

    用go来做嵌入式开发-交叉编译和自动版本号 嵌入式硬件平台一般是采用arm或者mips等非x86架构,因此需要在编...

  • 用go来做嵌入式开发-程序瘦身

    用go来做嵌入式开发-程序瘦身 在嵌入式设备中一般存储控件都比较小,go编译后的程序包含运行时,体积一般比较大,所...

  • 交叉工具链

    Ⅰ什么是交叉工具链 Ⅱ嵌入式开发模型——交叉开发 Ⅲ 常用交叉工具 ①交叉编译器 arm...

  • go做嵌入式系列大纲

    go做嵌入式系列大纲 硬件开发平台和开发环境搭建 交差编译和版本发布 如何程序体积变小 集成最小web服务器和前端...

  • cmake使用

    tags: 嵌入式categories: 开发 cmake 总结 交叉编译 设置编译器CMAKE_FORCE_C_...

  • 交叉编译环境搭建

    1.1实验目的 n掌握嵌入式开发环境、交叉编译器的搭建、安装和配置方法 1.2实验内容 n交叉编译器环境搭建 1....

  • 嵌入式开发入门

    嵌入式是基于Linux开发的。选择linux开发环境。 要进行嵌入式ARM开发,必须要先构建交叉编译环境,即:安装...

  • Ubuntu小白使用感受

    之前做项目软件都是在Window环境下开发的,甚至做Vxworks系统下嵌入式软件也是在xp的上位机里做交叉编译,...

  • 用go来做嵌入式开发-嵌入资源简化程序部署

    用go来做嵌入式开发-嵌入资源简化程序部署 在嵌入式中一般会设计到一些配置信息、图片和网页相关的资源,如果我们分开...

  • (1). GO嵌入式开发之 --- 交叉编译

    简介 golang也就是go语言,语言特性优越性和背后google强大靠山什么的就不多说了。golang的...

网友评论

    本文标题:用go来做嵌入式开发-交叉编译和自动版本号

    本文链接:https://www.haomeiwen.com/subject/htgvcctx.html