美文网首页
编译go项目

编译go项目

作者: wayyyy | 来源:发表于2022-11-25 16:04 被阅读0次

go build 常见编译选项:

参数 说明
-o 可执行文件名
-a 强制重新编译所有包
-p 并行编译所使用的CPU核数量
-v 显示待编译包名字
-n 仅显示编译命令,但不执行
-x 显示正在执行的编译命令
-work 显示临时工作目录,完成后不删除
-race 启动数据竞争检查
-gcflags 编译器参数
-ldflags 链接器参数
  • gcflags 常见参数有:

    参数 说明
    -B 禁用越界检查
    -N 禁用优化
    -l 禁用内联
    -u 禁用unsafe
    -S 输出汇编代码
    -m 输出优化信息
  • ldflags 常见参数有:

    参数 说明
    -s 禁用符号表
    -w 禁用DRAWF调试信息
    -X 设置字符串全局变量值
    -H 设置可执行文件格式
禁止编译优化
go build -gcflags "all=-N -l"  -o main.exe main.go
-ldflags -s -w 去掉符号表和调试信息
go build -ldflags -s -w -o main.exe main.go
利用-ldflags -X设置字符串全局变量值

发版时,我们需要一个信息版本号,如果每次人工修改,容易遗忘。而go 在编译时允许注入一个变量进去。

package main

import (
    "fmt"
)

var MinVersion string

func main() {
    fmt.Println(fmt.Sprintf(publish: %s", MinVersion))
}

如下命令编译:

go build -ldflags "-X 'main.MinVersion=1.0.0.1'" -o main.exe main.go

执行输出:


image.png

我们可以将代码提交ID作为在Makefile 中写入进去,这样就不用每次修改版本号了。

通过 go bulid -tags 实现编译控制

TODO

相关文章

  • 编译go项目

    go build 常见编译选项: 参数说明-o可执行文件名-a强制重新编译所有包-p并行编译所使用的CPU核数量-...

  • gomobile 编译

    背景 接触go之后,编译了一个用go写的项目,准备编译成aar,在Android 工程中使用。这里记录下,编译时候...

  • 部署go环境

    1、go环境变量 GOROOT go在电脑中的安装位置 GOPATH go项目存放目录 GOBIN go编译的安...

  • Go Quick

    编译 go build 在当前项目根目录下执行编译命令go build,会在当前路径下生成可执行文件。 使用以GO...

  • 《Go语言四十二章经》第八章 Go项目开发与编译

    《Go语言四十二章经》第八章 Go项目开发与编译 作者:李骁 8.1 项目结构 Go的工程项目管理非常简单,使用目...

  • liteide 创建 GO 项目

    前置条件:安装 GO的编译工具 开始新建GO项目。 文件 --》新建image.png 选择 “Go1 Comma...

  • 交叉编译 Go 项目

    Windows 下 cmd : PowerShell : linux 下 bash: 可选项 GOOSGOARCH...

  • go-day1

    Go 命令 go build :编译Go程序 go build -o "xx.exe" :编译成xx.exe文件 ...

  • pcap.h No such file or directory

    在linux x86机器上 编译go 项目没问题,代码移到arm机器上 编译出现 /pkg /mod/github...

  • 交叉编译

    使用go的交叉编译 最后使用go build windows_fping.go 编译出.exe可执行文件 如果编译...

网友评论

      本文标题:编译go项目

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