客户那边使用的浏览器版本为火狐78.0,然而这个版本官方并没有提供ARM版本的安装包,只能通过源码去编译;现将操作的全流程,全都记录下来,方便后来者参考。
系统:

1.下载源码
从Mozilla官方归档下载Firefox 78.0的源码包(注意选择.source.tar.xz)。
https://archive.mozilla.org/pub/firefox/releases/78.0/source/
wget https://archive.mozilla.org/pub/firefox/releases/78.0/source/firefox-78.0.source.tar.xz
bash
tar -xvf firefox-78.0.source.tar.xz
cd firefox-78.0
2.安装依赖
麒麟V10基于Debian,使用apt安装大部分依赖,但部分包存在版本冲突,需要用aptitude智能解决。
2.1 更新软件源并安装基础工具
bash
sudo apt update
sudo apt install -y build-essential autoconf2.13 yasm python3 python3-pip libgtk-3-dev libdbus-glib-1-dev libasound2-dev libnotify-dev libbz2-dev libcurl4-openssl-dev zlib1g-dev
2.2 安装aptitude(用于解决依赖冲突)
bash
sudo apt install -y aptitude
2.3 安装GTK+2及相关开发包(Firefox 78仍需GTK+2)
bash
sudo aptitude install libgtk2.0-dev libdrm-dev libxt-dev libx11-xcb-dev libdbus-1-dev libxtst-dev libxss-dev libpci-dev libasound2-dev libcurl4-nss-dev libpulse-dev
当aptitude提示依赖冲突时,按n键查看下一个解决方案,直到出现包含降级libgtk2.0-0并安装libgtk2.0-dev的方案,然后按Y接受并执行。
2.4 单独解决libx11-xcb-dev的依赖冲突
bash
sudo aptitude install libx11-xcb-dev
同样,遇到冲突时按n寻找降级方案(会降级libx11-6、libx11-dev和libx11-xcb1),然后按Y确认。
2.5 验证关键库的安装
bash
pkg-config --modversion gtk+-2.0 # 应输出 2.24.32
pkg-config --libs x11-xcb # 应输出 -lX11-xcb
3. 安装Node.js 14.x(构建所需)
Firefox 78需要Node.js ≥10.21,建议安装14.x LTS版本(ARM64架构)。
bash
# 下载ARM64二进制包
wget https://nodejs.org/dist/latest-v14.x/node-v14.21.3-linux-arm64.tar.xz
# 解压到/usr/local
sudo tar -xf node-v14.21.3-linux-arm64.tar.xz -C /usr/local/
# 创建软链接
cd /usr/local/node-v14.21.3-linux-arm64/bin
sudo ln -s $(pwd)/node /usr/local/bin/node
sudo ln -s $(pwd)/npm /usr/local/bin/npm
sudo ln -s $(pwd)/npx /usr/local/bin/npx
# 验证
node --version # 应显示 v14.21.3
npm --version
4. 安装Rust工具链
Firefox 78要求Rust 1.41.0,但编译cbindgen需要新版Rust,因此我们需要通过rustup管理多版本。
4.1 安装rustup
bash
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# 安装时选择默认选项(1)
source ~/.cargo/env
4.2 安装Rust 1.41.0(用于Firefox编译)和1.70.0(用于编译cbindgen)
bash
rustup install 1.41.0
rustup install 1.70.0 # 或更高稳定版,用于编译cbindgen
# 配置环境变了永久生效
echo 'export PATH="$HOME/.cargo/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
4.3 配置Cargo镜像(可选,加速下载)
编辑:
bash
~/.cargo/config.toml
输入如下内容:
bash
[net]
git-fetch-with-cli = true
[source.crates-io]
replace-with = "tuna"
[source.tuna]
registry = "https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git"
或者使用其他镜像(如中科大rustcc),如下:
bash
[net]
git-fetch-with-cli = true
[source.crates-io]
replace-with = "rustcc"
[source.rustcc]
registry = "https://mirrors.ustc.edu.cn/crates.io-index"
保存退出!
5. 安装cbindgen(正确版本:0.14.2)
从源码编译安装,并使用--locked锁定依赖版本,避免因新版依赖导致兼容性问题。
bash
# 切换到Rust 1.70.0(用于编译cbindgen)
rustup default 1.70.0
# 克隆cbindgen仓库并切换到v0.14.2
git clone https://github.com/eqrion/cbindgen.git
cd cbindgen
git checkout v0.14.2
# 安装(使用--locked保证依赖与Cargo.lock一致)
cargo install --path . --locked --force
# 验证
cbindgen --version # 应输出 cbindgen 0.14.2
6. 切换回Rust 1.41.0并配置Firefox源码目录
bash
cd /home/d2000/下载/firefox-78.0 # 回到Firefox源码目录
rustup override set 1.41.0
rustc --version # 确认显示 rustc 1.41.0
7. 创建.mozconfig配置文件
①进入Firefox源码目录
bash
cd /home/d2000/下载/firefox-78.0
②在Firefox源码根目录下创建.mozconfig
bash
vi .mozconfig
③粘贴以下内容(可根据需要调整):
bash
# ========== Firefox 78 生产环境编译配置(麒麟V10/aarch64) ==========
# 1. 核心必选
ac_add_options --enable-application=browser
# 2. 编译优化
ac_add_options --disable-debug
ac_add_options --enable-optimize=-O2
ac_add_options --enable-strip
ac_add_options --enable-jemalloc
# 3. 功能保留(确保用户体验)
ac_add_options --enable-pulseaudio # 启用音频
ac_add_options --enable-ffmpeg # 启用FFmpeg解码(增强视频兼容性)
ac_add_options --enable-official-branding # 启用官方品牌资源
# ac_add_options --enable-ui-locale=zh-CN # 如需中文界面可取消注释(需网络下载语言包)
# 4. 功能精简
ac_add_options --disable-tests
ac_add_options --disable-updater
ac_add_options --disable-crashreporter
ac_add_options --disable-parental-controls
ac_add_options --disable-necko-wifi
# 5. 架构与兼容性
ac_add_options --target=aarch64-unknown-linux-gnu
ac_add_options --host=aarch64-unknown-linux-gnu
ac_add_options --with-system-zlib
# 6. 可选:启用调试符号(仅用于问题追踪,生产环境建议注释)
ac_add_options --enable-debug-symbols
保存退出!
8. 开始编译
bash
# 清理之前失败的构建(如有)
./mach clobber
# 执行构建
./mach build
首次编译耗时较长,若中途因缺少其他依赖而失败,根据错误提示安装对应开发包后重新运行./mach build。
9. 运行编译好的Firefox
编译成功后,可执行文件位于obj-aarch64-unknown-linux-gnu/dist/bin/firefox。直接运行:
bash
./obj-aarch64-unknown-linux-gnu/dist/bin/firefox
10.设置桌面快捷方式
新建Firefox.desktop文件,写入如下内容:
bash
[Desktop Entry]
Version=1.0
Name=Firefox
Comment=这是一个说明
Exec=/home/d2000/firefox/firefox-78.0/obj-aarch64-unknown-linux-gnu/dist/bin/firefox
Icon=/home/d2000/firefox/firefox-78.0/firefox.png
Terminal=false
Type=Application
请替换自己程序的路径!

赋予执行权限:
sudo chmod 777 Firefox.desktop
将其复制到桌面即可!
如果需要添加到系统菜单栏:
sudo cp -f Firefox.desktop /usr/share/applications/
操作好后注销一下电脑!
11.启用软件解码(如果无需播放视频,可忽略)
地址栏输入 about:config,接受风险提示。
搜索并双击将以下选项改为 false:
bash
media.ffmpeg.vaapi.enabled
media.hardware-video-decoding.enabled(若存在)
media.omx.enabled(若存在)
media.navigator.mediadatadecoder_enabled(若存在)
搜索 layers.acceleration.disabled 并确保其为 true(禁用所有硬件加速)。
安装 FFmpeg 库
bash
sudo aptitude install ffmpeg libavcodec-extra
遇到冲突时按n寻找降级方案,寻找降级安装方案;
重启Firefox。
最终安装好Firefox78.0

只能是英文的,设置中文时提示网络有问题,目前没有找到方案解决!