为了账号安全,请及时绑定邮箱和手机立即绑定

使用 /cmd 结构构建 Go 项目时出错(多个入口点)

使用 /cmd 结构构建 Go 项目时出错(多个入口点)

Go
跃然一笑 2023-06-26 15:04:17
这是我的项目的目录结构(~/go/src/bitbucket.org/a/b):├── cmd│   ├── c│   │   └── main.go│   └── d│       └── main.go├── config│   ├── config.go│   ├── default.json│   └── development.json├── go.mod├── go.sum├── log│   └── log.go├── main.go我需要编译 2 个二进制文件(cmd/ 中的每个模块一个)。我尝试GO111MODULE=on go build ./cmd/c从项目根目录(~/go/src/bitbucket.org/a/b)运行。它默默地完成,什么也不做。我也尝试过跑步GO111MODULE=on go build -o test ./cmd/c。它创建了 29kbtest文件。当我向它添加执行权限并运行时,它结束时出现错误:./test: 2: ./test: Syntax error: newline unexpected我尝试过使用 go 1.12.5 和 go 1.11.10。此外,当我将main.go任何 cmd 目录中的文件放入项目根目录并构建时,编译器会很好地构建它(二进制文件大小约为 33mb)。是否可以在单个项目中使用 2 个编译器入口点?
查看完整描述

1 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

go install ./...如果您想获取可执行文件,您可以使用它,它将在 $GOPATH/bin 目录中创建可执行文件

关于多个编译器入口点,您可以。您可以使用构建go build ./cmd/c ./cmd/d .,但无法获取可执行文件,因为GO 文档 -o只能在单个包的情况下使用。相反,您可以编写一个makefile来获取具有单个 make 目标的所有可执行文件。

关于您看到的错误,我需要更多信息。当我尝试构建示例应用程序时,一切正常。但我没有使用 GO111MODULE 标志。

//img2.sycdn.imooc.com/6499388f00015b0506470534.jpg

  1. go build给我stackoverflow可执行文件

  2. go build -o test ./cmd/c给我测试可执行文件

  3. go build ./cmd/c给我c可执行文件

查看完整回答
反对 回复 2023-06-26
  • 1 回答
  • 0 关注
  • 75 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信