"go build" 命令后找不到可执行/二进制文件

8

我是golang的新手,我有一个单一的包文件"hello_world.go",我通过"go build hello_world.go"进行编译。之后,我期望看到可执行文件"hello_world",但我没有看到。

我尝试使用"go build"选项-x和-v,以下是输出结果:

go build -x -v hello_world.go
WORK=/tmp/go-build697702511
command-line-arguments
mkdir -p $WORK/command-line-arguments/_obj/
mkdir -p $WORK/
cd /home/vignesh/exercism/go/hello-world
/usr/local/go/pkg/tool/linux_amd64/compile -o $WORK/command-line- arguments.a -trimpath $WORK -goversion go1.9.2 -p command-line-arguments -complete -buildid 1d40767f999b0c5cb646b061911455ddde0101d2 -D _/home/vignesh/exercism/go/hello-world -I $WORK -pack ./hello_world.go

以下是在进行了上述两个"go build"操作后,我的工作目录中的内容。
-rw------- 1 vignesh vignesh  208 Jul 17 20:50 .solution.json
-rw-rw-r-- 1 vignesh vignesh 1451 Jul 17 20:50 README.md
-rw-rw-r-- 1 vignesh vignesh 1311 Jul 17 20:50 hello_test.go_bkp
drwxr-xr-x 4 vignesh vignesh 4096 Jul 18 18:27 ..
-rw-rw-r-- 1 vignesh vignesh 1311 Jul 18 20:27 hello_test.go
-rw-rw-r-- 1 vignesh vignesh  684 Jul 18 20:29 hello_world.go
drwxr-xr-x 2 vignesh vignesh 4096 Jul 18 20:57 .

我尝试使用命令"go build -o aaa hello_world.go"来生成二进制文件"aaa",但执行时出现以下错误:
./aaa: line 1: syntax error near unexpected token `newline'
./aaa: line 1: `!<arch>'

以下是"go env"的输出:
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/vignesh/exercism/go"
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build845978294=/tmp/go-build -gno-record-gcc-switches"
CXX="g++"
CGO_ENABLED="1"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"

请帮我解决这个问题或提供任何调试建议,谢谢。

提前感谢。

1个回答

21
你正在构建一个不是main的包,所以没有可执行文件需要创建。设置-o标志会强制build输出本来会被丢弃的对象文件,但那不是一个可执行文件。Go对象文件以字符串!<arch>\n开头,这就是你试图执行它时收到错误的原因。
请将你的包名称更改为main

感谢您的回答,@JimB。它起作用了,我现在能够构建包了。 - Vignesh k

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