执行“ go build”命令后无法找到可执行文件/二进制文件

时间:2018-07-18 16:14:37

标签: linux go

我是golang的新手,我只有一个打包文件go文件“ hello_world.go”,可以通过“ go build hello_world.go”进行编译。 在此之后,我希望看到可执行文件“ hello_world”。但我看不到。

我尝试将选项-x和-v与“ go build”一起使用,下面是输出

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

下面是经过两次“执行构建”操作之后我工作目录的内容

-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 个答案:

答案 0 :(得分:4)

您要构建的软件包不是main,因此没有可执行文件可创建。设置-o标志会强制build输出目标文件,否则该目标文件将被丢弃,但它不是可执行文件。 Go对象文件以字符串!<arch>\n开头,这就是为什么在尝试执行该错误时会收到该错误的原因。

将软件包名称更改为main