在轻量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
sudo pacman -S qemu-user-static qemu-user-static-binfmt

然后找个你瞅着顺眼的文件夹下载 Arch RISC-V的根文件系统,这是一个*.tar.zst文件,你可以在mirror z上面选择镜像站然后进入系统镜像*一栏里的链接,选择后缀为latest的文件的下载

1
2
cd /你瞅着感觉还不错的文件夹
wget -c archriscv的文件连接

解压文件,由于我用的zsh所以有些逆天的玩法

1
x archriscv-latest.tar.zst

没有整zsh插件的话应该是

1
sudo tar -I zstd -xvf archriscv-latest.tar.zst -C archriscv

然后到了最激动人心的启动时刻

QEMU,启动!

1
sudo systemd-nspawn -D ./archriscv/ --machine archriscv -a -U

进入环境之后检查一下是不是riscv

1
uname -m

正常情况下运行命令之后的输出绝对是

1
riscv64

记得换源。

准备Firefox编译环境

进入RISC-V环境后要安装的有: mercurial, git, rustup, clang ,nodejs
我用的Arch Linux RISC-V所以直接用pacman

1
pacman -S rustup clang nodejs git mercurial

实际上你现在所处的虚拟环境可能还差:libice, libsm, gtk3, libxcomposite, libpulse, llvm
其他发行版该如何操作请自行上网查找或者去相应的论坛问,有的subreedit也不错。

编译Firefox

这一段参考Makoto的博客
从Mozilla那里抓取源码( 我猜没人会用mercurial所以给的git):

1
git clone https://github.com/mozilla/gecko-dev

记得源码很大,大概有7.4GB左右,很要等一下。
然后进入文件夹

1
cd gecko-dev

在这个目录下创建一个mozconfig文件,

1
vim mozconfig

文件内容如下:

1
2
3
4
5
6
7
8
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/objdir
mk_add_options AUTOCLOBBER=1

ac_add_options --enable-application=browser
ac_add_options --disable-debug
ac_add_options --enable-optimize
ac_add_options --disable-tests
ac_add_options --without-wasm-sandboxed-libraries

之后运行

1
./mach bootstrap

注意网络连接问题,
当提示*Please choose the version of Firefox you want to build (see note above)*时,选择2. Firefox for Desktop
在漫长的等待之后如果报错,那要仔细检查后面提示的报错信息,
但如果提示

1
Your system should be ready to build Firefox for Desktop!

表明你可以进行下一步了:

1
./mach configure

如果输出的*** Fix above errors and then restart with "./mach build"*那估计心里要凉半截了,因为你要解决这行提示上面的ERROR才能build.

请坐和放宽

这是最后一步,但通常也是最漫长的一步。编译一个在RISC-V平台上能运行的Firefox,编译的速度取决于你的电脑性能如何(当跑分也是可以的)

1
./mach build

编译完成后的可执行文件
我的13980HX在大放水的情况下跑了203分钟。编译完成之后的可执行文件路径是gecko-dev/objdir/dist/bin/
3.5GHz不是放水是什么(

结语

目前RISC-V平台实际上比很多人想象中的要成熟很多,用来应对日常工作真的没有太大问题,跟树莓派差不多,但是硬件性能不是特别强。目前RISC-V软件适配方面那是特别迅速,谷歌和高通准备在穿戴设备上采用RISC-V安卓也开始逐步支持RISC-V 。毕竟没人不会喜欢免费自由的硬件/软件。


在轻量RISC-V环境中编译Firefox
https://isblade.com/2023/11/16/riscv-ff/
作者
Lustre Blade
发布于
2023年11月16日
许可协议