问题描述
如果我运行 go build -o bin/test ./scripts/test.go
我得到一个可执行文件,但是当我尝试运行它时我得到
Failed to execute process './bin/test'. Reason:
exec: Exec format error
The file './bin/test' is marked as an executable but Could not be run by the operating system.
脚本/test.go
package scripts
import (
"fmt"
)
func main() {
fmt.Println("hello")
}
解决方法
应该是package main
:
package main
import "fmt"
func main() {
fmt.Println("hello")
}
https://tour.golang.org/welcome
,go build
命令的 documentation 包含有关其工作原理的详细信息。
总结:
- 构建“main”包将输出一个可执行文件
- 构建一个非主包将输出一个对象(并丢弃它)
- 使用
-o
构建将强制命令不丢弃输出,并将其保存到指定文件
所以基本上你在这里做的是构建一个非主包,它输出一个目标文件,而不是一个可执行文件。通常这会被丢弃,但由于使用了 -o
选项,您已强制将其输出到文件中。
要获得实际的可执行文件,您只需将包名更改为 main
(如 Steven Penny 所述)