首页
课程
问答
CTF
社区
招聘
峰会
发现
排行榜
知识库
工具下载
看雪20年
看雪商城
证书查询
登录
注册
首页
社区
课程
招聘
发现
问答
CTF
排行榜
知识库
工具下载
峰会
看雪商城
证书查询
社区
WEB安全
发新帖
0
3
[原创]编译最新版本浏览器
发表于: 2026-6-19 09:51
2348
[原创]编译最新版本浏览器
一只鸭子
2026-6-19 09:51
2348
# 从零编译 Chromium 浏览器(Manjaro Linux) 这篇没什么高深的东西,就是踩坑记录。Chromium 的官方文档只照顾 Ubuntu 用户,Manjaro 上跑一遍全是暗坑,记下来下次少走弯路 环境:Manjaro Linux(Arch 系) 版本:Chrome 151.0.7900.0,V8 15.1.143。 今夕是何年:2026 年 06 月 19 日 星期五 09:48:07 CST (嘿,端午节) 编译这个是为了我的一个项目,剪裁浏览器,把一些我们在自动化过程中不用的功能砍掉,比如历史浏览记录,下载管理,书签之类的东西,还有就是可以更深入的理解浏览器指纹是怎么产生的,应该怎么去追他们的使用路径,了解浏览器核心 --- ## 拉源码:代理并发是第一个坎 Chromium 用 depot_tools 管理源码,`fetch` 一把梭。加 `--nohooks --no-history` 跳过 hook 和全量历史,省流量省时间: ```bash mkdir -p ~/NewCode/WebPage/Chromium/ChromiumSrc && cd $_ fetch --nohooks --no-history chromium ``` 跑起来直接炸——`gclient sync` 默认并发拉几十个子仓库,全走代理瞬间堵死,大量 fetch 失败。 解决办法很简单,我走了一个很操蛋的方法 1. 使用 Git 进行克隆浏览器主体项目 2. 在 src 目录内再使用`gclient`进行同步几百个子目录模块 ```shell git clone --depth 1 --progress https://chromium.googlesource.com/chromium/src.git src cd src # 我是这样做了,实际上在src外也可以的 gclient sync --nohooks --no-history ``` 硬克隆有点难绷了,但是我也不知道为啥,AOSP 和 Lineage OS 都能找到镜像源但是为啥 Chromium 没国内源 --- ## 装依赖:Arch 可能还是被用的少了 Chromium 自带的 `build/install-build-deps.sh` 只支持 Ubuntu/Debian,Manjaro 不在支持列表里。手动用 pacman 装: ```bash sudo pacman -S --needed base-devel python gperf bison flex pkgconf nss alsa-lib \ gtk3 cups dbus libnotify gnome-keyring libxss libxtst libxcomposite libxrandr \ libxdamage pango atk at-spi2-core krb5 mesa libva ``` 都是编译和运行时需要的库,缺一个后面都可能报诡异的链接错误。Google 的文档不会告诉你这些——它们假设你在 Ubuntu 上,所有东西 apt 一把过。 --- ## 跑 Hooks:等就完了 ```bash gclient runhooks ``` 这一步下载 clang 工具链、sysroot、vpython3 等,全从 Google 服务器拉。其中 `vpython3 install` 一个 hook 就跑了 100 多秒。没什么技巧,挂代理等着就行。 --- ## 踩坑:LASTCHANGE 文件缺失 如果跳过 hooks 直接跑 `gn gen`,会报错找不到 `build/util/LASTCHANGE.committime`。Chromium 的构建系统用这个文件标记版本时间戳,手动生成: ```bash python3 build/util/lastchange.py -o build/util/LASTCHANGE python3 build/util/lastchange.py --revision-id-only --header build/util/LASTCHANGE.committime ``` 这是我想偷懒不跑`runhooks`但是发现还是得跑 --- ## 生成构建配置 ```bash gn gen out/Default --args='is_debug=false is_component_build=true' ``` 两个参数: - `is_debug=false`:Release 模式,编译产物小很多 - `is_component_build=true`:组件化构建,改一个文件不用全量重编,开发阶段必开 后续剪裁的时候 `gn args` 会越来越复杂,砍功能就是在这里做文章。但第一次编译先跑通,先让可见的成功激励一下自己 --- ## 编译 ```bash autoninja -C out/Default chrome ``` 提示 `offline mode` 是正常的——RBE 远程编译是 Google 内部服务,外部开发者只能本地来。全量编译取决于硬件,我这跑了好几个小时。 ### 踩坑:子仓库未拉取完整 编译时报某个 `.json` 文件 missing,查了一圈发现是 `gclient sync` 时部分子仓库只创建了 `.git` 目录但没有 checkout 出文件。去 `src/DEPS` 找到对应的 commit hash,手动拉: ```bash cd third_party/search_engines_data/resources git fetch --depth 1 origin <commit-hash> git checkout FETCH_HEAD ``` 或者直接再跑一次 `gclient sync -j 4`,让它自动补全。 --- ## 跑起来 编译产物在 `out/Default/chrome`: ```bash ./out/Default/chrome ``` 版本信息: ``` Chrome 151.0.7900.0 (开发者内部版本) (64 位) V8 15.1.143 用户代理 Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 ``` 修订版本全 0 是因为 `--no-history` 浅克隆,不影响功能。 --- ## 顺手解决:zsh 在超大仓库下的卡顿 Chromium 几十万个文件,oh-my-zsh 的 git 插件每次 prompt 都跑 `git status`,按一次回车等一两秒。在仓库内关掉: ```bash git config --local oh-my-zsh.hide-dirty 1 git config --local oh-my-zsh.hide-status 1 ``` prompt 恢复毫秒级响应,其他仓库不受影响。需要看分支时手动 `git branch`。 --- ## 总结 整个过程最大的障碍不是代码,是网络——从国内通过代理拉 Google 服务器的源码和工具链,不稳定是常态。核心经验就四条: 1. **降并发**:`gclient sync -j 4`,别让代理扛不住 2. **反复跑**:`gclient sync` 可以重试,已成功的不会重复 3. **手动补缺**:missing 文件查 DEPS 找 commit hash,手动 fetch 4. **先跑通再剪**:第一次编译别折腾 gn args,跑通再说 相比 AOSP/LineageOS 的编译体验,Chromium 省心不少——`gn gen` 过了基本一路到底,不需要一直盯着修错。 操蛋的是编译期间随手更新了 mesa,然后 Obsidian 打不开了,报 `libLLVM.so.22.1` 找不到。跟 Chromium 编译本身没关系,但提醒我——搞这种大工程的时候别同时动系统库,出了问题排查方向都是乱的。
传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!!
收藏
・
0
点赞
・
3
打赏
分享
分享到微信
分享到QQ
分享到微博
赞赏记录
参与人
雪币
留言
时间
wx_晨梦
非常支持你的观点!
2026-7-16 08:01
jjjo
为你点赞!
2026-6-22 10:44
新气象
非常支持你的观点!
2026-6-19 10:06
查看更多
赞赏
×
1 雪花
5 雪花
10 雪花
20 雪花
50 雪花
80 雪花
100 雪花
150 雪花
200 雪花
支付方式:
微信支付
赞赏留言:
快捷留言
感谢分享~
精品文章~
原创内容~
精彩转帖~
助人为乐~
感谢分享~
最新回复
(
1
)
Imxz
雪 币:
112
活跃值:
(9420)
能力值:
( LV2,RANK:10 )
在线值:
发帖
6
回帖
752
粉丝
9
关注
私信
Imxz
2
楼
tql
2026-6-21 09:31
0
游客
登录
|
注册
方可回帖
回帖
表情
雪币赚取及消费
高级回复
返回
一只鸭子
15
发帖
57
回帖
20
RANK
关注
私信
他的文章
[原创]基于 Trace 的 VMP 还原实践文档
325
[讨论]逆向死没死
383
[原创] 七神VMP真正的分析与还原
5465
[原创] 用 P-code 做 VMP 还原:一份实战向的 IR 入门
3206
[讨论]模型的理解
378
关于我们
联系我们
企业服务
看雪公众号
专注于PC、移动、智能设备安全研究及逆向工程的开发者社区
看原图
赞赏
×
雪币:
+
留言:
快捷留言
为你点赞!
返回
顶部