前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >golang-101-hacks(4)——go build”和 go install

golang-101-hacks(4)——go build”和 go install

作者头像
羊羽shine
发布2019-05-29 16:34:27
3800
发布2019-05-29 16:34:27
举报
文章被收录于专栏:Golang开发Golang开发

查看当前$GOPATH目录结构,只展开src源码目录 Let's tidy up the$GOPATH directory and only keep Go source code files left over:

代码语言:javascript
复制
# tree
.
├── bin
├── pkg
└── src
    ├── greet
    │   └── greet.go
    └── hello
        └── hello.go

5 directories, 2 files

在源码greet包的greet.go文件中只有一个函数

代码语言:javascript
复制
# cat src/greet/greet.go
package greet

import "fmt"

func Greet() {
        fmt.Println("Hello 中国!")
}

虽然hello.go是一个main利用的包,greet可以构建到可执行的二进制文件中:

代码语言:javascript
复制
# cat src/hello/hello.go
package main

import "greet"

func main() {
        greet.Greet()
}

进入src/hello目录 执行go build命令 (1) Enter the src/hello directory, and execute go build command:

代码语言:javascript
复制
# pwd
/root/gowork/src/hello
# go build
# ls
hello  hello.go
# ./hello
Hello 中国!

我们可以看到在当前目录中创建了一个新的hello命令。 We can see a fresh hello command is created in the current directory. 查看$GOPATH目录 Check the $GOPATH directory:

代码语言:javascript
复制
# tree
.
├── bin
├── pkg
└── src
    ├── greet
    │   └── greet.go
    └── hello
        ├── hello
        └── hello.go

5 directories, 3 files

除了go build,还有另外一个终极命令 Compared before executing go build, there is only a final executable command more. (2) Clear the $GOPATH directory again:

代码语言:javascript
复制
# tree
.
├── bin
├── pkg
└── src
    ├── greet
    │   └── greet.go
    └── hello
        └── hello.go

5 directories, 2 files

在hello目录下运行go install Running go install in hello directory:

代码语言:javascript
复制
# pwd
/root/gowork/src/hello
# go install
#

Check the $GOPATH directory now:

代码语言:javascript
复制
# tree
.```
├── bin
│   └── hello
├── pkg
│   └── linux_amd64
│       └── greet.a
└── src
    ├── greet
    │   └── greet.go
    └── hello
        └── hello.go

6 directories, 4 files

不仅在bin目录中生成hello命令,而且在pkg/linux_AMd64中还生成了greet.a。而SRC文件夹没有任何变化,只包含源代码。

(3) There is -i flag in go build command which will install the packages that are dependencies of the target, but won't install the target. Let's check it:

代码语言:javascript
复制
# tree
.
├── bin
├── pkg
└── src
    ├── greet
    │   └── greet.go
    └── hello
        └── hello.go

5 directories, 2 files

Run go build -i under hello directory:

代码语言:javascript
复制
# pwd
#/root/gowork/src/hello
# go build -i
Check $GOPATH now:
# tree
.
├── bin
├── pkg
│   └── linux_amd64
│       └── greet.a
└── src
    ├── greet
    │   └── greet.go
    └── hello
        ├── hello
        └── hello.go

除了src/hello目录中的hello可执行文件外,也会在pkg/linux_amd64目录下生成的greet.a依赖库文件。 默认情况下,go build以当前目录的名作为编译后的二进制文件的名,要修改二进制文件名,可以使用-o标记

代码语言:javascript
复制
# pwd
/root/gowork/src/hello
# go build -o he
# ls
he  hello.go

可执行文件名称有hello变成了he

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.05.24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档