gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 02:30:54 25 4
gpt4 key购买 nike

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

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"

最佳答案

所以在 golang slack guys 的 super 帮助下。我使用

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

在我使用之前

go build hello.go

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

sudo chmod 755 hello

最后执行二进制文件。

./hello

及其工作。

关于ubuntu - 服务器上的简单 go 二进制部署不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55160397/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com