栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

go中生成可执行文件

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

go中生成可执行文件

go中生成可执行文件

文章目录
  • go中生成可执行文件
      • 一、简介
      • 二、使用
      • 三、示例
        • 3.1 带参数编译
          • 3.1.1 目标go文件
        • 3.2 多文件编译
        • 3.3 go项目编译
      • 四、其它
        • 4.1 go install
        • 4.2 go目录结构

一、简介

这里介绍对go项目进行打包编译生成可执行文件,其实包含参数的传递、目标可执行文件类型、打包对象。

二、使用

go项目的编译命令为go build,编译包,生成可执行文件(包含main包),默认生成位置在当前目录下。 (注意不能生成包文件)。如下:

go build
参数有:
-ldflags:用于编译时设置变量值
-o:指定编译生成的目标文件名
-v:编译时显示包名

另外编译预设变量:
GOOS:指定编译生成可执行文件的运行系统,常用的有:windows、linux、darwin
GOARCH:指定编译生成可执行文件的运行系统架构,常用的有:amd64、arm

其中参数传递-ldflags的二级参数为:

-X:设置包中的变量值
-s:去掉符号表,异常时没有文件名或行号信息
-w:去掉DWARF调试信息
三、示例 3.1 带参数编译 3.1.1 目标go文件

这里目标go文件param_main.go我放在with_param目录下。

package main
import "fmt"

//参数定义,由外部传值
var (
   Env string
   Version string
)
func main() {
   fmt.Printf("Env:%s Version:%s n", Env, Version)
}

编译命令:

GOOS=darwin GOARCH=amd64 go build  -o "with_param/param_main" -ldflags "-w -s -X main.Env=test -X main.Version=1.0" with_param/param_main.go

运行编译命令后,后成可执行文件param_main,执行文件后,输出:

Env:test Version:1.0 
3.2 多文件编译

在multi目录下新建目标go文件hello.go和multi_main.go,如下:

package main
func DoHello(name string) {
   println("hello " + name)
}
package main
func main() {
   println("execute main")
   DoHello("apple")
}

编译命令:

GOOS=darwin GOARCH=amd64 go build  -o "multi/multi_main"  multi/multi_main.go multi/hello.go

运行编译命令后,后成可执行文件multi_main,执行文件后,输出:

execute main
hello apple
3.3 go项目编译

go项目编译直接在项目根目录下编译即可(不需要单独指定编译目录),如:

GOOS=darwin GOARCH=amd64 go build  -o "targte_exe" -ldflags "-w -s -X main.Env=test -X main.Version=1.0"
四、其它 4.1 go install

除了使用go build编译外,还可以使用go install,直接生成库。

  • 编译包文件(没有main包)后,编译的包放到pkg目录下($GOPATH/pkg)
  • 生成可执行文件(有main包)后,可执行文件放到bin目录下($GOPATH/bin)
4.2 go目录结构

项目结构目录结构通常为:

根路径下:
src:源文件
pkg:包文件
bin:可执行文件
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/910557.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号