编译 Firfox

在线代码

这里在线浏览代码。

tarball

tarball 是代码仓库的快照,打包了某个版本的全部代码,因为做了压缩,比直接clone下载的数据量更小,速度更稳定,也多了断点续传。国内推荐用这种方式下载,参考这里。下载后解压成仓库的流程参考这里:解压 bundle

Mozconfig

一些编译时的配置需要放到 Mozconfig 文件里,参考这里

编译

编译流程参考:这里

其中遇到一些技术点:

artifact:这种方式不用编译C++相关的代码,编译速度更快。适合于面向 Java 语言的开发者。

Developer guide

和 Firefox 开发相关的说明全在这里

Working with Mozilla source code

和 Mozilla 代码相关的说明全在这里。包括如何检出代码,提交代码,编译等。

Mozilla Source Code Directory Structure

源码目录结构,当你需要进一步熟悉各模块时,首先要区分都有哪些模块,参考:这里。一般我比较关心的几个模块:

browser:这里是浏览器的界面和主题相关代码

netwerk:网络套件库,也叫 Necko

security:包含 NSSPSM 两套安全套件,NSS 包含了用于 SSL 的密码算法

view:一套跨平台的 UI 组件库,承担绘图、事件处理、滚动、透明化等

widget:它是 view 的宿主,是 view 与操作系统原生的 UI 系统的枢纽

网络层 Necko

Necko 是一个跨平台的网络库,提供了网络多层的接口。

使用 GDB 调试

关于一些使用上可能遇到的问题,请参考这里