Golang构建:在执行特定路径下的可执行文件时出现“语法错误:意外的换行符”

3

我的应用程序打包成以下形式:

|-cmd/
|-cmd/application/ <- this contains the main.go and other files
|-internal/ <- contains internal dependencies
|-vendor/ <- contains third party libraries

当从根目录 / 运行以下命令时:

go build cmd/application/*.go

它生成的可执行文件可以正常运行。但是当在/cmd/application目录下输入以下命令时:

go build my_app_custom_name

我遇到了Syntax error: newline unexpected这个错误,似乎它不再是一个可执行的bash文件了。


2
"语法错误:意外的换行符"很可能是Bash错误。在哪个命令之后会出现这个消息? - Christian
2
请阅读《如何编写Go代码》(https://golang.org/doc/code.html)。Go build旨在处理“包”而不是文件列表。 - JimB
3
不是使用 go build . 或者 go build *.go 命令,应该使用 go build 或者 go build 完整/导入/路径/包名 命令,并添加 -v-x 标志来查看正在发生的事情。请注意,不要更改原始含义。 - Volker
1
除非它在文字上稍后的两段中提到:如果构建的参数是一组.go文件,build将把它们视为指定单个包的源文件列表。 - Kaedys
1
这是公平的,而且我过去在这里对其他问题进行了评论,我们应该专注于“推荐”的风格。我个人确实经常使用文件名风格,所以我才提到它(尽管部分原因是我的工作场所有一个讨厌的习惯,即将多个相互不可编译的带有main()函数的文件放在同一个目录中,并通过文件名来编译它们 >.>)。 - Kaedys
显示剩余6条评论
1个回答

9

在使用参数-v和-x后,通过@Volker的指示,我发现我给程序包命名为“myapp”,而不是应该是“main”。现在它正常运行。

如@Kaedys和@JimB所说,最好使用标准形式构建应用程序:

go build // Method one from inside directory with go files
go build full/import/path/of/package/to/build // second method

请注意,这是如何编写Go代码中推荐的方法。
另一种构建方式是在存放Go包的目录中使用go build .go build *.go

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接