go build
作用:将Go语言程序和相关依赖编译成可执行文件
go build 无参数编译
生成当前目录名的可执行文件并放置于当前目录下,如:
go build
go build+文件列表
编译同目录的多个源码文件时,可以在 go build 的后面提供多个文件名,go build 会编译这些源码,输出可执行文件,“go build+文件列表”的格式如下:
go build file1.go file2.go…
可执行文件默认选择文件列表中第一个源码文件作为可执行文件名输出,如:
go build upload.go main.go
使用“go build+文件列表”编译方式编译时,文件列表中的每个文件必须是同一个包的 Go 源码。
注意:如果go build main.go,但是main.go调用了同包的其他文件,会报错。
$ tree -L 2
└── main
├── main.go
└── hello.go
main.go内容如下:
package main
func main() {
println("this is function main")
hello()
println(A)
}
hello.go内容如下:
package main
var A string = "AA"
func hello() {
println("this is function hello")
}
因为同一个包下,并没有import语句,不会自动导入。解决:go build main.go hello.go
$ go build main.go
# command-line-arguments
.main.go:5:2: undefined: hello
.main.go:6:10: undefined: A
go build+包
可以直接根据包名进行编译,即便包内文件被增(加)删(除)也不影响编译指令。
下面的命令用于构建同一个包,虽然它们的写法各不相同:
$ cd $GOPATH/src/gopl.io/ch1/helloworld
$ go build
或者
$ cd anywhere
$ go build gopl.io/ch1/helloworld
或者
$ cd $GOPATH
$ go buil服务器托管网d ./src/gopl.io/ch1/helloworld
但不能这样
$ cd $GOPATH
$ go build src/gopl.io/ch1/helloworld
Error: cannot find package "src/gopl.io/ch1/helloworld".
go build 还有一些附加参数,可以显示更多的编译信息和更多的操作,详见下表所示。
附加参数 | 备 注 |
---|---|
-v | 编译时显示包名 |
-p n | 开启并发编译,默认情况下该值为 CPU 逻辑核数 |
-a | 强制重新构建 |
-n | 打印编译时会用到的所有命令,但不真正执行 |
-x | 打印编译时会用到的所有命令 |
-race | 开启竞态检测,常用于并发模式下的共享变量检测 |
-o | 后接文件名,强制对输出的文件进行重命名 |
-work | 打印编译工作的临时目录 |
-gcflags | 后面的参数可以是多个,用空格进行分隔,并用 "" 进行包裹,这些参数将传递到 go tool compile 工具中进行调用。例如,go build -gcflags "-l -m"
|
-ldflags | 后面的参数可以是多个,用空格进行分隔,并用 “”进行包裹,这些参数将传递到 go tool link 工具中进行调用。例如,go build -ldflags “-w -s”。这个命令可以隐藏所有代码实现相关的信息,并减少生成文件的大小。其中,-w 可以移除调试信息(无法使用gdb 调试),-s 可以移除符号表 |
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net