从 Windows 到 Linux 编译 Go 应用程序时出现问题
Issues while compiling a Go app from Windows to Linux
我的问题:
我需要将 Go 应用程序从 Windows(当前工作区)编译到 Linux(部署环境),我尝试了几次使用该平台中描述的一些技术以及更多技术没有任何帮助,一切看起来都很好,但不起作用。
我正在为 linux 在 windows
中使用此脚本进行编译
$ set GOARCH=amd64
$ set GOOS=linux
$ go build app_name.go
在cmd
文件夹中我可以找到一个名为app_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_name.go
它工作完美,但问题出现在编译或尝试为 linux 编译应用程序后,我即使 root
也无法 运行 应用程序
在 Unix 系统上,文件必须设置可执行位才能成为 运行。这是系统知道哪些程序或脚本可以是 运行 的唯一方式,并且不同于 Windows,后者使用扩展名。
在这种情况下,您需要在尝试执行之前通过 运行ning chmod u+x unified_mapper
更改权限。如果你想让其他用户也执行它,你可以做类似 chmod 755 unified_mapper
的事情。 运行 man 1 chmod
在手册页中查看有关可能调用的更多详细信息。
我的问题:
我需要将 Go 应用程序从 Windows(当前工作区)编译到 Linux(部署环境),我尝试了几次使用该平台中描述的一些技术以及更多技术没有任何帮助,一切看起来都很好,但不起作用。
我正在为 linux 在 windows
中使用此脚本进行编译$ set GOARCH=amd64
$ set GOOS=linux
$ go build app_name.go
在cmd
文件夹中我可以找到一个名为app_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_name.go
它工作完美,但问题出现在编译或尝试为 linux 编译应用程序后,我即使 root
在 Unix 系统上,文件必须设置可执行位才能成为 运行。这是系统知道哪些程序或脚本可以是 运行 的唯一方式,并且不同于 Windows,后者使用扩展名。
在这种情况下,您需要在尝试执行之前通过 运行ning chmod u+x unified_mapper
更改权限。如果你想让其他用户也执行它,你可以做类似 chmod 755 unified_mapper
的事情。 运行 man 1 chmod
在手册页中查看有关可能调用的更多详细信息。