欣闻龙芯3A6000处理器正式上市,性能达到了较好水平(已经远高于我爹2015年买的mac,我目前正在密集使用它,以期尽快报废),而且价格合理(16g内存+1tb固态硬盘才不到4000,甚至带光驱)。 国产芯片如此争气,这使得立志少买不买电子产品的我打算在回国之后买一台,用实际行动支持国产。 但我也注意到,尽管龙芯做了很多适配工作,*uix对loongarch64架构的支持仍然有点小问题。 所以我在QEMU虚拟机里面安装了loongarchlinux,做一些编译和安装工作。 以下是我的踩到的坑,未来会不断更新,希望能有帮助。

Neovim和LuaJIT

目前(2023年12月10日)LoongArchLinux软件仓库没提供neovim。 这是因为neovim的正常编译需要LuaJIT,而LuaJIT拒绝了龙芯方面提交的Loongarch64支持补丁。 LuaJIT的作者Mike Pall说:你这个代码质量不高(他也没证据),而且龙芯不见得能活过五年。 这就太不像话了:龙芯能不能活过五年,取决于软件生态好不好,即取决于编译器、运行时等底层基础设施是否支持它。 现在你不支持他,我连neovim都没法用,“活不过五年”不就成了一个自我实现的预言吗?

Neovim的编译需要带luajit和luarocks,而且是编译程序下载源代码后,把luajit和几个lua包编译进去。 很自然,在编译到luajit时,系统就会提示不支持loongarch64架构。 网上有人教过一个办法,把luajit和luarock在编译时都给去掉(感谢这位老师)。 我自己实验的结果是结果是输入```:help’'’就会闪退。 好在龙芯方面给Mike Pall提供的代码是公开的,可以下载。 我考虑的是直接在编译过程中,把这个luajit给换掉,看看能否编译通过。

如果带luarock的话,在用neovim编译程序编译出的luajit编译luarocks时(我没写错,就是这个流程),会报segematation fault。 我还没弄清楚这是龙芯给的luajit补丁的问题,还是我有什么地方没调对。 此外我还试了不用luajit编译luarocks,而是用自己的lua5.1编译luarocks,

需要更新包依赖才能正常编译的软件

下面这些软件调用了跟系统底层相关的包,老版本的包不支持Loongarch,因此需要手动调整包依赖。 暂时没有发现调整后的程序出现bug。

Lazygit

Lazygit是tui下的git管理器,用go编写。 其实也有gitui等竞品,但我现在用的lazyvim依赖于它。 之前由于loongarch下golang toolchain版本低,无法编译lazygit。 目前只需把pty包调整为最新版。 编译成功后,直接把lazygit二进制文件复制到/usr/local/bin。 这里就不给出pkgbuild了。

结语

Tags:

Categories:

Updated: