我已经在我的manjaro linux上使用go版本"go1.11.5 linux/amd64“配置了它。下面的程序内置到二进制文件中,这个二进制文件直接在我的go文件夹和我的home文件夹中工作。
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
让我知道我还需要分享什么才能让这篇文章生效。我有另一个项目建立与杜松子酒和许多其他包。我需要配置该二进制文件来为同一服务器上的api提供服务。由于这不起作用,我决定使用这个非常简单的二进制文件,令我惊讶的是,这并不起作用。
让我为本地和远程两个系统发布go env。
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服务器上转到env
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"
发布于 2019-03-14 19:45:35
所以有了golang slack家伙的超级帮助。我使用以下工具构建
CGO_ENABLED=0 GOOS=linux go build -o najamgo hello.go
在我使用之前
go build hello.go
然后,由于我使用ftp,我不得不将传输类型从"auto or acscii“更改为"binary”。然后,从那时起,只需对上传的文件执行chmod,使其可执行。
sudo chmod 755 hello
最后执行二进制文件。
./hello
而且它起作用了。
https://stackoverflow.com/questions/55160397
复制相似问题