如何编译Go程序?

huangapple go评论139阅读模式
英文:

How can I compile a Go program?

问题

我成功编译了Go代码:
<pre>
0个已知错误;0个意外错误
</pre>
并输入了“hello world”代码:

package main

import "fmt"

func main() {
  fmt.Printf("Hello, 世界\n")
}

然后我尝试编译它,但是无法进行:
<pre>
$ 8c gotest2
gotest2:1 不是一个函数
gotest2:1 语法错误,最后一个名称:main
</pre>
这是在Pentium上的Ubuntu Linux上发生的情况。Go已安装并通过了测试。那我错在哪里?有人可以告诉我接下来该怎么做吗?

我还尝试了这个程序

package main

import fmt "fmt"  // 实现格式化I/O的包。


func main() {
    fmt.Printf("Hello, world; or Καλημέρα κόσμε; or こんにちは 世界\n");
}

但这也不行<sub>(必须停止制造go双关语)</sub>:
<pre>
$ 8c gotest3.go
gotest3.go:1 不是一个函数
gotest3.go:1 语法错误,最后一个名称:main
</pre>

英文:

I got Go to compile:
<pre>
0 known bugs; 0 unexpected bugs
</pre>
and typed in the "hello world":

package main

import &quot;fmt&quot;

func main() {
  fmt.Printf(&quot;Hello, 世界\n&quot;)
}

Then I tried to compile it, but it wouldn't go:
<pre>
$ 8c gotest2
gotest2:1 not a function
gotest2:1 syntax error, last name: main
</pre>
This is going on on Ubuntu Linux on Pentium. Go installed and passed its tests. So where did I go wrong? Can someone tell me where to go from here?

I also tried this program:

package main

import fmt &quot;fmt&quot;  // Package implementing formatted I/O.


func main() {
    fmt.Printf(&quot;Hello, world; or Καλημέρα κόσμε; or こんにちは 世界\n&quot;);
}

But this was also no go <sub>(must stop making go puns)</sub>:
<pre>
$ 8c gotest3.go
gotest3.go:1 not a function
gotest3.go:1 syntax error, last name: main
</pre>

答案1

得分: 42

对于Go 1.0+,正确的构建命令现在是:go build

英文:

For Go 1.0+ the correct build command is now: go build

答案2

得分: 12

您正在使用的是8c,这是C编译器。8g将编译Go代码,而8l将进行链接。

英文:

You're using 8c, which is the c compiler. 8g will compile go, and 8l will link.

答案3

得分: 3

(Go1.0.x更新)

编译包和依赖关系”部分现在将go build列为在go中进行编译的方式。
在幕后仍然调用8g,现在可以通过-gcflags传递给8g的参数也会被传递。

-gcflags '参数列表'

在每个5g、6g或8g编译器调用中传递的参数

英文:

(Update for Go1.0.x)

The section "Compile packages and dependencies" now list go build as the way to compile in go.
You still call 8g behind the scene, and the parameters you could pass to 8g are now passed with -gcflags.

-gcflags &#39;arg list&#39;

> arguments to pass on each 5g, 6g, or 8g compiler invocation

答案4

得分: 0

使用go run 命令来运行go程序。以下是输出结果。

$ cat testgo.go

package main

import "fmt"

func main() {
  fmt.Printf("Hello, 世界\n")
}

$go run testgo.go

Hello, 世界
英文:

use go run <filename> to run the go program. Here is the output.

$ cat testgo.go

package main

import &quot;fmt&quot;

func main() {
  fmt.Printf(&quot;Hello, 世界\n&quot;)
}

$go run testgo.go

Hello, 世界

答案5

得分: 0

要编译Go代码,请使用以下命令:

go tool compile gotest3.go # 创建一个目标文件。
go tool link -o gotest3 gotest3.o # 从目标文件编译。
chmod +x gotest3 # 添加可执行权限。
./gotest3 # 运行可执行文件。
英文:

To compile Go code, use the following commands:

go tool compile gotest3.go # To create an object file.
go tool link -o gotest3 gotest3.o # To compile from the object file.
chmod +x gotest3 # To apply executable flag.
./gotest3 # To run the binary.

答案6

得分: 0

进入工作目录并编译- go build

英文:

Go into the working directory and to compile- go build

huangapple
  • 本文由 发表于 2009年11月11日 19:26:12
  • 转载请务必保留本文链接:https://go.coder-hub.com/1714584.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定