ElfBoard組建的共創(chuàng)社是嵌入式科技創(chuàng)新與學(xué)習(xí)實踐的前沿陣地,我們有幸見證著每一位共創(chuàng)官積極投身于嵌入式技術(shù)的熱潮中,用實際行動詮釋著探索精神。今天就跟各位小伙伴分享一下共創(chuàng)官是怎樣將Go程序編譯并運行在ELF 1開發(fā)板上的。
一、在GoLand中配置
(一) 配置SSH連接Ubuntu虛擬機以及ELF 1開發(fā)板
1、打開GoLand的設(shè)置選項找到SSH,配置連接到Ubuntu虛擬機、并測試連接是否正常。
2、同樣配置連接到ELF 1開發(fā)板并測試是否連接正常。
(二) 創(chuàng)建項目編寫測試程序
1、從GoLand中創(chuàng)建項目編寫測試程序如下:
package main
import "fmt"
func main() {
fmt.Println("Hello ELF1 !")
}
2、執(zhí)行默認配置、查看Windows下輸出正常。
(三) 編譯到Ubuntu虛擬機運行
1、在配置選項卡中創(chuàng)建新配置、選擇運行于第一步配置好的Ubuntu虛擬機并且在管理目標(biāo)中配置好虛擬機中的項目存放路徑。
2、編譯執(zhí)行查看結(jié)果:可以看到Ubuntu項目目錄下已經(jīng)有編譯好的程序,以及運行結(jié)果。
3、在Ubuntu中再次確認,打開項目目錄,執(zhí)行程序,查看結(jié)果。
(四) 編譯到開發(fā)板運行
從第三部分可以看到直接在GoLand中配置編譯到遠程目標(biāo)機是非常簡單的,但是很可惜在ELF 1開發(fā)板上不能直接這樣做。因為參考快速啟動手冊開發(fā)板默認配置是沒有sftp的,只有ftp,而GoLand依賴于sftp,所以不能直接這樣配置。
所以就需要Go的環(huán)境變量來使其編譯出目標(biāo)機可執(zhí)行的程序。先配置一下編譯到Ubuntu虛擬機測試一下。
1、先配置編譯到Linux平臺測試,打開配置,新建一個配置。運行于選本地機器,選擇輸出目錄到項目下,配置Go的環(huán)境?GOOS=linux。
2、編譯可以看到target目錄下生成的Linux程序,上傳到Ubuntu虛擬機中測試。
3、可以看到測試結(jié)果正常。
現(xiàn)在就可以正式配置編譯到開發(fā)板啦。1、新建配置,添加Go環(huán)境?GOOS=linux;GOARCH=arm;GOARM=7
2、運行配置,執(zhí)行編譯。
3、上傳到開發(fā)板、修改可運行權(quán)限,這里直接配置為777,運行查看結(jié)果。
結(jié)果正確,程序正常運行?。?/p>
二、使用Gin框架編寫一個簡單的Web后端
繼續(xù)嘗試編寫一個簡單的Web后端服務(wù),使用Gin Web Framework。
官網(wǎng):gin-gonic.com/zh-cn/
文檔:gin-gonic.com/zh-cn/docs/
(一) 新建項目、編寫程序
1、新建項目,安裝Gin。
go get -u github.com/gin-gonic/gin
2、編寫簡單示例:
package main
import (
"github.com/gin-gonic/gin"
)
func main() {
// 創(chuàng)建一個默認的路由引擎
r := gin.Default()
// GET:請求方式;/hello:請求的路徑
// 當(dāng)客戶端以GET方法請求/hello路徑時,會執(zhí)行后面的匿名函數(shù)
r.GET("/hello", func(c *gin.Context) {
// c.JSON:返回JSON格式的數(shù)據(jù)
c.JSON(200, gin.H{
"message": "Hello world!",
})
})
// 啟動HTTP服務(wù),默認在0.0.0.0:8080啟動服務(wù)
r.Run()
}
3、在Windows中測試程序是否正確,首先啟動服務(wù),使用ApiFox測試,可以看到程序正常。
(二) 編譯到開發(fā)板并測試
1、同樣新建配置,添加Go環(huán)境GOOS=linux;GOARCH=arm;GOARM=7
2、執(zhí)行編譯、拷貝到ELF 1開發(fā)板、修改可執(zhí)行權(quán)限。
3、運行服務(wù),并測試:
可以看到,服務(wù)正常運行,請求回應(yīng)也正常。