在轻量RISC-V环境中编译Firefox
说在前头
RISC-V架构在近年发展速度无疑是特别快的,头一次知道这个指令集还是我初中的时候,那会试过编译一个能在RISC-V平台上运行的Firefox,然后 编译尝试未半而中道崩溃 。很快啊,就在今年上半年我看到了open Euler上的一篇名为 openEuler RISC-V 的 Firefox 性能大升级,最高 40 倍性能提升 的博客,文中提到
在过去一年,RISC-V SIG 成功将 Firefox 适配在 openEuler RISC-V 上,在目前主要的 RISC-V 开发版和测试环境中,Firefox 可以成功打开图形界面,并且能完成网页浏览,验证登录,收发邮件,播放视频等基础功能,满足用户的基本使用需求。
属实是让我开眼了
回到正题上,其实那时候我就想再试试编译Firefox,但因为准备高考没时间所以一直拖到现在。 而且现在跟以前相比,在RISC-V平台上编译Firefox要方便不少(
准备Arch Linux RISC-V环境
问就是用Arch用的,如果你有其他的RISC-V环境可以直接跳到后面看怎么编译Firefox。
用Windows的看到这可以洗洗睡了,或者准备WSL.
这一部分可以直接看GitHub上archriscv-packages的wiki 其他发行版该怎么操作这里面也有写。
我用的Arch Linux,所以是
1 |
|
然后找个你瞅着顺眼的文件夹下载 Arch RISC-V的根文件系统,这是一个*.tar.zst文件,你可以在mirror z上面选择镜像站然后进入系统镜像*一栏里的链接,选择后缀为latest的文件的下载
1 |
|
解压文件,由于我用的zsh所以有些逆天的玩法
1 |
|
没有整zsh插件的话应该是
1 |
|
然后到了最激动人心的启动时刻
QEMU,启动!
1 |
|
进入环境之后检查一下是不是riscv
1 |
|
正常情况下运行命令之后的输出绝对是
1 |
|
记得换源。
准备Firefox编译环境
进入RISC-V环境后要安装的有: mercurial, git, rustup, clang ,nodejs
我用的Arch Linux RISC-V所以直接用pacman
1 |
|
实际上你现在所处的虚拟环境可能还差:libice, libsm, gtk3, libxcomposite, libpulse, llvm
其他发行版该如何操作请自行上网查找或者去相应的论坛问,有的subreedit也不错。
编译Firefox
这一段参考Makoto的博客
从Mozilla那里抓取源码( 我猜没人会用mercurial所以给的git):
1 |
|
记得源码很大,大概有7.4GB左右,很要等一下。
然后进入文件夹
1 |
|
在这个目录下创建一个mozconfig文件,
1 |
|
文件内容如下:
1 |
|
之后运行
1 |
|
注意网络连接问题,
当提示*Please choose the version of Firefox you want to build (see note above)*时,选择2. Firefox for Desktop
在漫长的等待之后如果报错,那要仔细检查后面提示的报错信息,
但如果提示
1 |
|
表明你可以进行下一步了:
1 |
|
如果输出的*** Fix above errors and then restart with "./mach build"*
那估计心里要凉半截了,因为你要解决这行提示上面的ERROR才能build.
请坐和放宽
这是最后一步,但通常也是最漫长的一步。编译一个在RISC-V平台上能运行的Firefox,编译的速度取决于你的电脑性能如何(当跑分也是可以的)
1 |
|
我的13980HX在大放水的情况下跑了203分钟。编译完成之后的可执行文件路径是gecko-dev/objdir/dist/bin/
结语
目前RISC-V平台实际上比很多人想象中的要成熟很多,用来应对日常工作真的没有太大问题,跟树莓派差不多,但是硬件性能不是特别强。目前RISC-V软件适配方面那是特别迅速,谷歌和高通准备在穿戴设备上采用RISC-V,安卓也开始逐步支持RISC-V 。毕竟没人不会喜欢免费自由的硬件/软件。