银河麒麟V10+飞腾D2000/8处理器+在线源码编译安装Firefox78.0指南

客户那边使用的浏览器版本为火狐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

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

相关推荐
小短腿的代码世界18 分钟前
Qt属性系统深度解析:元对象系统的隐藏宝石
qt
小短腿的代码世界19 分钟前
交易回测可视化深度解析:Qt如何让量化策略“活“起来
qt
Ulyanov1 小时前
《PySide6 GUI开发指南:QML核心与实践》 第五篇:Python与QML深度融合——数据绑定与交互
开发语言·python·qt·ui·交互·雷达电子战系统仿真
czxyvX14 小时前
1-Qt概述
c++·qt
Ulyanov16 小时前
《玩转QT Designer Studio:从设计到实战》 QT Designer Studio数据绑定与表达式系统深度解析
开发语言·python·qt
Ulyanov18 小时前
《玩转QT Designer Studio:从设计到实战》 QT Designer Studio组件化开发与UI组件库构建
开发语言·python·qt·ui·雷达电子战系统仿真
梵高的向日葵�23921 小时前
OpenCV+MySQL+Qt构建智能视觉系统(msvc)
qt·opencv·mysql
Ulyanov21 小时前
《玩转QT Designer Studio:从设计到实战》 QT Designer Studio动画与动效系统深度解析
开发语言·python·qt·系统仿真·雷达电子对抗仿真
键盘会跳舞1 天前
【Qt】分享一个笔者持续更新的项目: https://github.com/missionlove/NQUI
c++·qt·用户界面·qwidget
史迪仔01121 天前
[QML] Qt Quick Dialogs 模块使用指南
开发语言·前端·c++·qt