Go build&install

此文章仅作为个人笔记整理,参考于:blog.csdn.net/zhangliangz…

├── myapp
│   └── test.go
└── mypkg
    └── hello.go
复制代码

hello.go

package mypkg

func Hello() string {
	return "hello"
}
复制代码

test.go

package main

import (
	"fmt"
	"mypkg"
)

func main() {
	fmt.Println(mypkg.Hello())
}

复制代码

cd 到 mypkg目录下

  • go build 无效果
  • go install , 在目录 $GOPATH/pkg/$GOOS_$GOARCH下生成mypkg.a

cd 到 myapp目录下

  • go build 在当前目录得到可执行文件 myapp
  • go build test,go 在当前目录得到可执行文件 test
  • go install 在目录 $GOPATH/bin下生成可执行文件myapp
  • go install test.go 在目录 $GOPATH/bin下生成可执行文件test

go build在当前目录下编译生成可执行文件,并且调用所有引用包的源码,重新编译,而不是直接使用pkg里的编译后文件,如果在$GOROOT$GOPATH下没有找到import引入包的项目源码,就会报错。在本demo里,main.go中import引入了”mypkg”包,如果我删除$GOPATH/src/mypkg源码,执行go build指令,会报错。

go install编译源代码,如果为可执行文件(package “main”且包含main方法),则会编译生成可执行文件到$GOPATH/bin目录下;可执行文件import引入的其他包,就会被编译到$GOPATH/pkg/$GOOS_$GOARCH目录下。

go install也可以完成类似go build的功能,区别在于go install会生成二进制文件到$GOPATH/pkg/$GOOS_$GOARCH目录下(这个二进制文件对于我们并没什么意义),但go install会把可执行文件自动生成到$GOBIN目录下

总结:
相同点
都能生成可执行文件

不同点
go build 不能生成包文件, go install 可以生成包文件
go build 生成可执行文件在当前目录下, go install 生成可执行文件在bin目录下($GOPATH/bin)
go build 经常用于编译测试.go install主要用于生产库和工具.

——补充——
go build : 编译出可执行文件
go install : go build + 把编译后的可执行文件放到GOPATH/bin目录下
go get : git clone + go install

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享