2 回答

TA貢獻(xiàn)1993條經(jīng)驗(yàn) 獲得超6個(gè)贊
在嘗試whereis go
了 Golang 的 conf 文件的每一個(gè)輸出之后,它就起作用了:
ExecStart=/usr/local/go/bin/go run /home/testbed/Desktop/test/test.go

TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超4個(gè)贊
Python 和 PHP 是解釋型語(yǔ)言,這意味著它們需要通過(guò)名為解釋器的程序運(yùn)行(對(duì)于 PHP that's/usr/bin/php
和對(duì)于 Python /usr/bin/python
),它獲取源代碼(您的.php
或.py
文件)并解釋它(將源代碼翻譯成計(jì)算機(jī)在運(yùn)行時(shí)可以理解的機(jī)器代碼) . 因此,任何想要運(yùn)行您的程序的人都需要:
你的程序(源代碼
.py
文件)您使用的任何庫(kù)
口譯員
Golang 不是那樣的,它是編譯語(yǔ)言(如 C 或 C++)。在編譯語(yǔ)言的情況下,您有一個(gè)稱(chēng)為編譯器的程序,它獲取源代碼(您的.go
文件)并生成(編譯)任何同類(lèi)計(jì)算機(jī)(具有相同或兼容的 CPU、操作系統(tǒng)等)直接理解的二進(jìn)制文件,而不需要任何解釋器或編譯器。在大多數(shù)情況下,在 Golang 中,您使用的所有庫(kù)也都編譯到該二進(jìn)制文件中,這對(duì)用戶(hù)來(lái)說(shuō)非常方便和容易。
在 Golang 中,而不是使用go run
命令,它是編譯和執(zhí)行一次的快捷方式。您想完成編碼,然后使用go build
命令將程序編譯為可執(zhí)行形式(在 Windows 上是.exe
文件,在 Linux 上是二進(jìn)制 - 沒(méi)有擴(kuò)展名的可執(zhí)行文件),然后從服務(wù)文件中執(zhí)行。
假設(shè)您的代碼文件是server.go
:
go build -o server server.go
將編譯您的源代碼并生成名為 server 的可執(zhí)行文件(我們強(qiáng)制命令通過(guò)添加go build
來(lái)命名它)server
-o server
您可以
./server
根據(jù)需要運(yùn)行多次。如果您需要更新代碼,那么您還需要重新運(yùn)行
go build -o server server.go
,這將生成更新的二進(jìn)制文件。這與 PHP 或 Python 略有不同(因此請(qǐng)注意這一點(diǎn))。
然后您只需更新您的服務(wù)文件(請(qǐng)參閱go
根本不需要):
[Service] ExecStart=/path/to/server [Install]
從服務(wù)文件編譯代碼并不是一個(gè)好主意,因?yàn)樗枰谶\(yùn)行程序的機(jī)器上安裝 go。同樣在 Golang 程序中,經(jīng)常從 Github 中提取庫(kù),如果有人更改庫(kù),因此您的程序不再編譯,服務(wù)將無(wú)法運(yùn)行。
- 2 回答
- 0 關(guān)注
- 165 瀏覽
添加回答
舉報(bào)