2 回答
TA贡献1993条经验 获得超5个赞
在尝试whereis go
了 Golang 的 conf 文件的每一个输出之后,它就起作用了:
ExecStart=/usr/local/go/bin/go run /home/testbed/Desktop/test/test.go
TA贡献1825条经验 获得超4个赞
Python 和 PHP 是解释型语言,这意味着它们需要通过名为解释器的程序运行(对于 PHP that's/usr/bin/php
和对于 Python /usr/bin/python
),它获取源代码(您的.php
或.py
文件)并解释它(将源代码翻译成计算机在运行时可以理解的机器代码) . 因此,任何想要运行您的程序的人都需要:
你的程序(源代码
.py
文件)您使用的任何库
口译员
Golang 不是那样的,它是编译语言(如 C 或 C++)。在编译语言的情况下,您有一个称为编译器的程序,它获取源代码(您的.go
文件)并生成(编译)任何同类计算机(具有相同或兼容的 CPU、操作系统等)直接理解的二进制文件,而不需要任何解释器或编译器。在大多数情况下,在 Golang 中,您使用的所有库也都编译到该二进制文件中,这对用户来说非常方便和容易。
在 Golang 中,而不是使用go run
命令,它是编译和执行一次的快捷方式。您想完成编码,然后使用go build
命令将程序编译为可执行形式(在 Windows 上是.exe
文件,在 Linux 上是二进制 - 没有扩展名的可执行文件),然后从服务文件中执行。
假设您的代码文件是server.go
:
go build -o server server.go
将编译您的源代码并生成名为 server 的可执行文件(我们强制命令通过添加go build
来命名它)server
-o server
您可以
./server
根据需要运行多次。如果您需要更新代码,那么您还需要重新运行
go build -o server server.go
,这将生成更新的二进制文件。这与 PHP 或 Python 略有不同(因此请注意这一点)。
然后您只需更新您的服务文件(请参阅go
根本不需要):
[Service] ExecStart=/path/to/server [Install]
从服务文件编译代码并不是一个好主意,因为它需要在运行程序的机器上安装 go。同样在 Golang 程序中,经常从 Github 中提取库,如果有人更改库,因此您的程序不再编译,服务将无法运行。
- 2 回答
- 0 关注
- 130 浏览
添加回答
举报