常见问题


  • 问题1: Golang中Loongarch64的GOARCH定义是什么?
    Golang中LoongArch64的GOARCH名称为loong64

  • 问题2: Golang上游社区对LoongArch64架构的支持怎么样?

版本 发布时间 LoongArch64相关的更新
Go1.19 2022-08-02 初始支持LoongArch64架构,包括sys、net等核心库
Go1.20 2023-02-01 原子操作等关键错误修复,fastrand、Sub/Add64等优化
Go1.21 2023-08-08 重定位2.0、PIE、c-shared、c-archive支持,Ptrace、VDSO等错误修复
Go1.22 2024-02-06 寄存器传参、msan、asan、plugin支持,duff设备等优化,链接器路径等错误修复
  • 问题3: LoongArch64上Golang社区版本目前还不支持那些特性?
    目前除race特性的相关补丁还没有合入社区代码仓库,其他常用的特性都已经支持.

  • 问题4: Golang社区是否提供LoongArch64上的二进制下载?
    从Go1.21开始,Golang社区提供LoongArch64平台上的二进制,可以直接下载使用,需要注意的是Golang社区
    提供的二进制是ABI2.0的版本,只能在内核版本为5.10及以上的操作系统上运行.

  • 问题5: ABI1.0和ABI2.0的版本有什么区别?
    因Linux内核社区在5.19版本正式合入了对LoongArch64架构的支持,所以上游社区的Loong64上Golang对内
    核最小需求是5.19, 这导致上游社区的Loong64上的Golang无法在4.19版本内核的操作系统上运行.这里发布
    的ABI1.0版本二进制是指可以运行在以4.19内核UAPI为基础的操作系统上的程序,如Loongnix server 8.4,
    Loongnix 20,UOS,麒麟等;ABI2.0版本指的是可以运行在以5.19内核UAPI为基础的操作系统上的程序,如
    OpenEuler 22.03 (虽然Openeuler 22.03的内核版本为5.10,但是兼容5.19内核的UAPI, 所以ABI2.0版本
    的Golang也可以在OpenEuler 22.03上运行).

  • 问题6: 通过了哪些测试?
    通过了Golang自带测试集的所有测试,可用于编译K8S、docker、tidb等大型程序.

  • 问题7: 如何解决Go编写的项目中所依赖项目对LoongArch不支持的问题?
    目前Golang的子项目sys、net、tools等都已经合入了上游社区, 很多的第三方库中都合入了对LoongArch64架构的支持,
    如果在编译Go的项目时出现依赖项目不支持LoongArch64的情况,可以通过更新依赖项目到最新版本的方法解决,下面
    以更新依赖sys库为例说明如何更新依赖库版本:

     go get -d golang.org/x/sys@latest
     go mod tidy
     go mod vendor (如果存在vendor目录,则需要此步骤)
    

    如果根据上述方法更新依赖库还是出现不支持LoongArch64的情况,请联系技术支持,我们将第一时间进行移植

  • 问题8: Loongnix服务器和桌面操作系统中是否提供对应的版本?
    Loongnix操作系统中提供了Go1.18、Go1.19、Go1.20、Go1.21对应版本的rpm/deb包,以Go1.19为例说明如何安装:
    Loongnix桌面版:
        apt-get install golang-1.19
    
    Loongnix服务器版:
        yum install golang-1.19
    
    安装完成后需要设置环境
        export PATH=/usr/lib/go-1.19/bin:$PATH
    

©龙芯开源社区 all right reserved,powered by Gitbook文档更新时间: 2024-03-12 14:58:13

results matching ""

    No results matching ""

    results matching ""

      No results matching ""