分享
  1. 首页
  2. 文章

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

byteman · · 2102 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

# 用go来做嵌入式开发-交叉编译和自动版本号 * 嵌入式硬件平台一般是采用arm或者mips等非x86架构,因此需要在编译程序的时候指定目标机器平台 * 有时候需要在go程序中自动生成版本号和编译日期信息,这个在c和c++中很方便实现有__TIME__和__DATE__宏可以实现,那么在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 ) ``` 2. 在项目中引用该包中的版本号和编译时间变量 var build_info= byutil.BuildVersion+byutil.BuildTime 3. 编译的时候通过tag传递当前时间和版本号给byutil包中的相关变量,具体参考第一节中的交叉编译脚本

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
2102 次点击
被以下专栏收入,发现更多相似内容
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏