无法在服务器上进行简单的二进制二进制部署

时间:2019-03-14 10:39:06

标签: ubuntu go

我已经在我的manjaro linux上使用go版本“ go1.11.5 linux / amd64”对其进行了配置。以下程序内置于二进制文件中,该二进制文件可直接在我的go文件夹和主文件夹中使用。

package main

import "fmt"

func main() {
    fmt.Printf("hello, world\n")
}

一旦它在我的本地系统上运行,我决定使用ftp将这个二进制文件上传到远程ubuntu 18.04服务器。我已将二进制文件复制到服务器主文件夹中。 chmod 755使其可执行。 chown将用户更改为服务器的当前登录用户。在服务器上安装了go版本“ go1.11 linux / amd64”。当我尝试执行二进制文件时,出现以下异常

Segmentation fault

让我知道要完成这项工作还需要分享什么。我还有另一个用gin和许多其他软件包构建的项目。我需要将该二进制文件配置为在同一台服务器上提供api。既然那行不通,我决定使用这个死掉的简单二进制文件,令我惊讶的是这行不通。

让我发布本地和远程系统的环境。

go env on local 
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/najam/.cache/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/najam/go"
GOPROXY=""
GORACE=""
GOROOT="/usr/local/go"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build859876677=/tmp/go-build -gno-record-gcc-switches"

在Ubuntu服务器上进入环境

GOARCH="amd64"
GOBIN=""
GOCACHE="/home/myuser/.cache/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/myuser/go"
GOPROXY=""
GORACE=""
GOROOT="/usr/local/go"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build276202541=/tmp/go-build -gno-record-gcc-switches"

1 个答案:

答案 0 :(得分:2)

因此,在golang懒散的家伙的帮助下。 我使用

构建
CGO_ENABLED=0 GOOS=linux go build -o najamgo  hello.go

在我使用

之前
go build hello.go

然后,由于我使用的是ftp,因此不得不将传输类型从“ auto或acscii”更改为“ binary”。然后从那时起,只需在上传的文件上使用chmod使其可执行即可。

sudo chmod 755 hello

最终执行二进制文件。

./hello

及其工作。