登录
首页 >  Golang >  Go问答

无法成功在服务器上部署简单的 Go 二进制文件

来源:stackoverflow

时间:2024-03-08 15:03:27 199浏览 收藏

本篇文章给大家分享《无法成功在服务器上部署简单的 Go 二进制文件》,覆盖了Golang的常见基础知识,其实一个语言的全部知识点一篇文章是不可能说完的,但希望通过这些问题,让读者对自己的掌握程度有一定的认识(B 数),从而弥补自己的不足,更好的掌握它。

问题内容

我已经在我的 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

让我知道我还需要分享什么才能使这项工作成功。我还有另一个用杜松子酒和许多其他包构建​​的项目。我需要配置该二进制文件以在同一台服务器上提供 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 服务器上运行环境

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"

解决方案


在 golang slack 人员的超级帮助下。 我使用

构建
cgo_enabled=0 goos=linux go build -o najamgo  hello.go

在我使用之前

go build hello.go

然后,由于我使用 ftp,我必须将传输类型从“自动或 acscii”更改为“二进制”。然后从那时起,只需对上传的文件进行 chmod 即可使其可执行。

sudo chmod 755 hello

最终执行二进制文件。

./hello

及其工作原理。

今天关于《无法成功在服务器上部署简单的 Go 二进制文件》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>