SylixOS Golang 快速入门

更新时间:
2024-12-31

SylixOS Golang 快速入门

本文介绍 SylixOS 系统下 Golang 程序开发快速入门。

安装 SylixOS Go 开发环境

前置条件

推荐使用 Linux 环境 或 macOS 环境。请确保以下条件已满足:

  1. 已安装 Git 工具,用于编译 SylixOS Go 源码包时使用。
  2. 已安装 tar 工具,用于解压源码包。
  3. 确保网络连接正常,以便下载所需文件。

注意:如果你使用的是 Windows 系统,建议使用 WSL(Windows Subsystem for Linux)来提供 Linux 环境。

编译 SylixOS Go 源码

  1. 安装宿主机系统的 Go(以 ubuntu 22.04 LTS 系统为例):

    sudo snap install go --classic
    
  2. 下载 SylixOS Go 源码包:

    SylixOS Go 1.23.4 版本源码包下载open in new window

    或通过以下命令下载:

    wget https://github.com/go-sylixos/go/archive/refs/tags/go1.23.4-sylixos.tar.gz
    
  3. 解压下载的源码包:

    tar -xzf go-go1.23.4-sylixos.tar.gz
    cd go-go1.23.4-sylixos
    
  4. 编译 SylixOS Go 源码:

    cd src
    ./make.bash
    

    你应该会看到类似如下的输出:

    Building Go cmd/dist using /snap/go/10748. (go1.23.4 linux/amd64)
    Building Go toolchain1 using /snap/go/10748.
    Building Go bootstrap cmd/go (go_bootstrap) using Go toolchain1.
    Building Go toolchain2 using go_bootstrap and Go toolchain1.
    Building Go toolchain3 using go_bootstrap and Go toolchain2.
    Building packages and commands for linux/amd64.
    ---
    Installed Go for linux/amd64 in /home/user/work/go/go-go1.23.4-sylixos
    Installed commands in /home/user/work/go/go-go1.23.4-sylixos/bin
    *** You need to add /home/user/work/go/go-go1.23.4-sylixos/bin to your PATH.
    
  5. 配置环境变量:

    将编译后的 Go 安装目录添加到 PATH 环境变量中。

    export PATH=/home/user/work/go/go-go1.23.4-sylixos/bin:$PATH
    

    建议修改 ~/.bashrc 文件,在 ~/.bashrc 文件的末尾添加以下内容:

    export PATH=/home/user/work/go/go-go1.23.4-sylixos/bin:$PATH
    

    然后执行 source ~/.bashrc 使环境变量生效。

  6. 验证安装:

    go version
    

    你应该会看到类似如下的输出:

    go version go1.23.4 linux/amd64
    

配置 SylixOS Go 开发环境

创建 Go 工作区

Go 语言有一个独特的工作区结构,所有的 Go 代码都应该放在一个工作区内。工作区是一个包含三个目录的目录:srcpkgbin

  1. src 目录包含你的 Go 源代码。
  2. pkg 目录包含编译后的包对象。
  3. bin 目录包含编译后的可执行文件。

例如,你的工作区结构可能如下所示:

/home/user/go/
    ├── bin/
    ├── pkg/
    └── src/

在使用 SylixOS Go 开发程序之前,首先需要创建工作区和设置工作区路径。可以通过以下步骤完成:

  1. 创建一个工作区,例如 ~/go

    mkdir ~/go
    mkdir ~/go/bin
    mkdir ~/go/pkg
    mkdir ~/go/src
    
  2. 设置 GOPATH 环境变量指向该目录:

    go env -w GOPATH="/home/user/go"
    

    注意:设置 GOPATH 环境变量不能使用 shell 变量 ~,故上面使用的是绝对路程,应用根据实际目录进行修改。

配置 GOPROXY

为了加速依赖包的下载,可以配置 GOPROXY。例如,可以使用 goproxy.cn

go env -w GOPROXY="https://goproxy.cn,direct"

清理 mod 缓存

在开发过程中,可能需要清理模块缓存。可以使用以下命令清理 mod 缓存:

go clean -modcache

SylixOS Go helloworld 程序开发

  1. 在 GOPATH/src 中创建一个目录作为项目目录,例如 hello

    cd $(go env GOPATH)/src
    mkdir hello
    
  2. 进入 hello 目录,初始化 go 项目

    cd hello
    go mod init
    
  3. hello 目录下,创建一个名为 hello.go 的文件,并添加以下内容:

    package main
    
    import "fmt"
    
    func main() {
         fmt.Println("Hello, World!")
    }
    

交叉编译

hello 目录下,执行以下命令编译程序:

GOOS=sylixos GOARCH=arm64 go build hello.go

编译完成后,会在 hello 目录生成一个名为 hello 的可执行文件。

部署到 SylixOS 目标机器并运行

  1. 使用 FTP 客户端工具部署文件到 SylixOS 目标机器:

    ftp 192.168.128.5
    

    输入 SylixOS 目标机器的用户名和密码:

    Connected to 192.168.128.5.
    220 SylixOS FTP server ready.SylixOS kernel version: 3.6.5 Code name: Age of Discovery
    Name (192.168.128.5:user): root
    331 Password required.
    Password: 
    

    上传文件:

    ftp> cd /apps
    ftp> binary
    ftp> put hello
    

    传输成功将会看到类似如下的输出:

    local: hello remote: hello
    227 Entering passive mode (192,168,128,5,188,232).
    150 Opening BINARY mode data connection.
    100% |******************************************************************************************************|  2213 KiB    7.18 MiB/s    00:00 ETA
    226 Transfer complete.
    2266520 bytes sent in 00:00 (6.71 MiB/s)
    

    输入 quit 退出 FTP 客户端。

  2. 在 SylixOS 目标机器上运行程序:

    通过 telnet 命令连接目标机器:

    telnet 192.168.128.5
    

    输入 SylixOS 目标机器的用户名和密码:

    Trying 192.168.128.5...
    Connected to 192.168.128.5.
    Escape character is '^]'.
    login: root
    password: 
    

    登录成功后,在输入 cd /apps 切换到 /apps 目录,并执行 ./hello 运行程序:

    [root@sylixos:/root]# cd /apps
    [root@sylixos:/apps]# ./hello
    Hello, World!
    
文档内容是否对您有所帮助?
有帮助
没帮助