首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >服务器上的简单go二进制部署不起作用

服务器上的简单go二进制部署不起作用
EN

Stack Overflow用户
提问于 2019-03-14 18:39:06
回答 1查看 301关注 0票数 0

我已经在我的manjaro linux上使用go版本"go1.11.5 linux/amd64“配置了它。下面的程序内置到二进制文件中,这个二进制文件直接在我的go文件夹和我的home文件夹中工作。

代码语言:javascript
运行
复制
package main

import "fmt"

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

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

代码语言:javascript
运行
复制
Segmentation fault

让我知道我还需要分享什么才能让这篇文章生效。我有另一个项目建立与杜松子酒和许多其他包。我需要配置该二进制文件来为同一服务器上的api提供服务。由于这不起作用,我决定使用这个非常简单的二进制文件,令我惊讶的是,这并不起作用。

让我为本地和远程两个系统发布go env。

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
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"
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-14 19:45:35

所以有了golang slack家伙的超级帮助。我使用以下工具构建

代码语言:javascript
运行
复制
CGO_ENABLED=0 GOOS=linux go build -o najamgo  hello.go

在我使用之前

代码语言:javascript
运行
复制
go build hello.go

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

代码语言:javascript
运行
复制
sudo chmod 755 hello

最后执行二进制文件。

代码语言:javascript
运行
复制
./hello

而且它起作用了。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55160397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档