常见问题
问题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桌面版:
Loongnix服务器版:apt-get install golang-1.19
安装完成后需要设置环境yum install golang-1.19
export PATH=/usr/lib/go-1.19/bin:$PATH