【问题标题】:Go project with 2 executables带有 2 个可执行文件的 Go 项目
【发布时间】:2014-06-18 17:56:30
【问题描述】:

大家好,我是 Golang 的新手,我正在编写一个玩具客户端和服务器应用程序,只是为了学习这些库。

但我有项目文件夹:

philipherron@Philips-iMac {~/workspace/gospace/src/github.com/redbrain/station} $ echo $GOPATH
/Users/philipherron/workspace/gospace

我想要 2 个二进制文件:

  • client.go
  • server.go

但是当我构建时,我得到:

philipherron@Philips-iMac {~/workspace/gospace/src/github.com/redbrain/station} $ go build github.com/redbrain/station/
# github.com/redbrain/station
./server.go:5: main redeclared in this block
    previous declaration at ./client.go:5

我想这是因为看起来我正在同一个包中制作电源。

所以我尝试创建一个客户端和一个服务器子目录,并在每个目录中都有二进制文件,但我得到了:

philipherron@Philips-iMac {~/workspace/gospace/src/github.com/redbrain/station} $ go build github.com/redbrain/station/client
go install github.com/redbrain/station/client: build output "client" already exists and is a directory

我猜这是因为我有以下布局:

$ tree
.
├── client
│   └── client.go
└── server
    └── server.go

2 directories, 4 files

不知道如何解决这个问题,在同一个目录中拥有相同的客户端和服务器会很好,但也许这违背了我在 go 中应该做的事情?

【问题讨论】:

  • go build 命令尝试在当前目录中创建一个可执行文件。尝试从不存在名为 client 的文件或目录的目录执行它。
  • 谢谢,我没注意到谢谢!

标签: go structure


【解决方案1】:

只需重命名您的 .go 文件。编译器正在尝试写入“客户端”,但“客户端”已被目录占用。

$ tree
.
├── client
│   └── main.go
└── server
    └── main.go

2 directories, 4 files

和/或创建一个脚本,以不同的名称输出它们go build -o client client/main.go

【讨论】:

    【解决方案2】:

    与上面的单独包一起,如果你设置 GOBIN=$GOPATH/bin 那么它将在 bin 目录中创建客户端和服务器,它不会与目录名称冲突

    【讨论】:

      猜你喜欢
      • 2019-12-08
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 2014-08-26
      • 1970-01-01
      • 2017-01-12
      • 2013-11-20
      • 2014-03-28
      相关资源
      最近更新 更多