程序可执行文件不运行

问题描述

如果我运行 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 所述)