将Go应用程序从Windows编译到Linux时出现的问题

将Go应用程序从Windows编译到Linux时出现的问题,linux,go,debian,Linux,Go,Debian,我的问题: 我需要编译一个从Windows(当前工作区)到Linux(部署环境)的Go应用程序,我已经尝试了好几次,使用了这个平台中描述的一些技术,还有更多的技术,但没有任何帮助,一切看起来都很好,但都不起作用 我在windows中使用此脚本编译linux $ set GOARCH=amd64 $ set GOOS=linux $ go build app_name.go 在cmd文件夹中,我可以找到一个名为app\u name的文件,没有扩展名,应该可以。 然后,我在尝试在Linux中执行二

我的问题:

我需要编译一个从Windows(当前工作区)到Linux(部署环境)的Go应用程序,我已经尝试了好几次,使用了这个平台中描述的一些技术,还有更多的技术,但没有任何帮助,一切看起来都很好,但都不起作用

我在windows中使用此脚本编译linux

$ set GOARCH=amd64
$ set GOOS=linux
$ go build app_name.go
cmd
文件夹中,我可以找到一个名为
app\u name
的文件,没有扩展名,应该可以。 然后,我在尝试在Linux中执行二进制文件时收到一个错误,使用了几种方法

$ ./app_name
-bash: ./app_name: Permission denied

$ source app_name
-bash: source: app_name: cannot execute binary file
这是我在编译后收到的文件:

-rw-r--r-- 1 xxx  xxx  7313830 Jan 26 16:59 app_name

如果我在windows中运行应用程序时使用的是
go run-arguments app\u name.go
它工作得很好,但是在编译或尝试编译linux应用程序后会出现问题,我无法运行该应用程序,即使在Unix系统上是
root

,文件必须设置可执行位才能运行。这是系统知道可以运行哪些程序或脚本的唯一方法,与使用扩展的Windows不同


在这种情况下,您需要先运行
chmod u+x unified\u mapper
来更改权限,然后再尝试执行它。如果您希望其他用户也执行它,您可以执行类似于
chmod 755 unified\u mapper
的操作。在手册页面中运行
man 1 chmod
,查看有关可能调用的更多详细信息。

那么
unified\u mapper
app\u name
之间到底有什么关联呢?