chromium ARM版本编译记录

需求

用的国产电脑,统信麒麟自带的chromium版本都是83版本,lceda要求超过100版本,低版本没法打开编辑器,只能用客户端版本。都是JS,还整这么多事...

刚开始想着一步到位直接在阿里云香港主机上买高配置的竞价虚拟机,结果居然编译不过,老是报有个东西没安装,试了好几次都不行,本来都计划放弃了的。周末闲着没事,想着家里的12核32GB的x86电脑也不弱了,再来搞一次交叉编译试试。

代码获取

必要条件是必须有办法有梯子,没梯子,代码都拉不下来。

编译过程参考的步骤,官网有2个网页。但是都太简单了,还有个stackexchange的问答,里面详细一些。

https://chromium.googlesource.com/chromium/src/+/main/docs/linux/build_instructions.md

https://chromium.googlesource.com/chromium/src/+/main/docs/linux/chromium_arm.md

ubuntu - Compile Chromium Browser for ARM (2019) - Unix & Linux Stack Exchange

基本上参考这3个地址就能正常编译了。

这里主要记录下我编译过程:

先配置git和http代理


/usr/bin/git config --global http.proxy http://xxx:xx
/usr/bin/git config --global https.proxy http://xxx:xx
export http_proxy="http://xxx:xx"
export https_proxy="http://xxx:xx"

然后拉工具配置环境


git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
export PATH="$PATH:$HOME/chromium/depot_tools"

然后拉代码


mkdir ~/chromium && cd ~/chromium
fetch --nohooks --no-history chromium

--no-history能节约好多空间。

配置和编译

然后就开始安装依赖


./build/install-build-deps.sh

这个过程报了个错,看了下是拉谷歌字体的时候用的个Py调用的curl,Py里面没法把环境变量的代理传进去,手工编辑下


vi ./build/linux/install-chromeos-fonts.py
#找到curl的那行,添加
'-x', 'http://192.168.5.221:20171', 
改好后的调用如下
subprocess.check_call(['curl', '-x', 'http://192.168.5.221:20171', '-L', url, '-o', tarball])

再执行install-build-deps.sh就好了。

然后再安装arm交叉编译的环境


./build/install-build-deps.sh --arm
./build/linux/sysroot_scripts/install-sysroot.py --arch=arm
./build/linux/sysroot_scripts/install-sysroot.py --arch=arm64

接下来开始配置并编译


mkdir out
mkdir out/arm
gclient sync && gclient runhooks &&

gn gen out/arm --args='is_official_build=true is_debug=false is_component_build=false symbol_level=0 enable_nacl=false blink_symbol_level=0 use_jumbo_build=true target_cpu="arm64" chrome_pgo_phase=0'
gclient runhooks
autoninja -C out/arm chrome

我机器编译大概一两个小时,看机器配置,编译完成后,网上很多文章说直接运行chrome就行,但我拷贝到飞腾机器上直接运行报错。后面打包了文件夹内容就正常了。


cd out
tar zcf ./arm.tar.gz --exclude=./arm/obj --exclude=./arm/thinlto-cache --exclude=./arm/clang_x64_v8_arm64 --exclude=./arm/clang_x86_v8_arm --exclude=./arm/gen --exclude=./arm/clang_x64 --exclude=./arm/irt_arm --exclude=./arm/nacl_helper ./arm

里面应该还打包了不少不需要的文件,不过体积大的基本被exclude掉了,拷贝到飞腾机器上解压后运行正常。

小坑

但是发现无法播放视频网站的视屏,但播放youtube的是可以的。搜索了下,有人早遇到过了

Chromium浏览器不能播放MP4-腾讯云开发者社区-腾讯云

原因是部分通用的H264 解码codec没编译进去,解决办法就是在生成配置的时候添加2个参数重新编译就好了。


proprietary_codecs = true ffmpeg_branding = “Chrome"

最后编译配置参数为:


gn gen out/arm --args='is_official_build=true is_debug=false is_component_build=false symbol_level=0 enable_nacl=false blink_symbol_level=0 use_jumbo_build=true target_cpu="arm64" chrome_pgo_phase=0 proprietary_codecs=true ffmpeg_branding="Chrome" chrome_pgo_phase=0'

如果想进一步了解,可以查看这些参数的说明,比如:


gn args --list out/arm | grep -C10  ffmpeg_branding

后续如果遇到需要从源码编译什么版本,增加禁用什么功能就可以自己搞定了,不用再看国内浏览器厂商脸色了。

关于硬件解码

在Linux上如何查看有3个方法:

1. chrome://gpu/  这个页面查看下面两行

  • Video Decode: Hardware accelerated
  • Video Encode: Software only. Hardware acceleration disabled

2. 在真实页面播放视频,F12打开开发者工具,右边三个点的按钮点开选媒体,点选正在播放的播放器查看属性。

 3. 用chrome://media-internals/ 查看媒体播放器,选中正在播放的视频,下面会显示属性

至于这个里面显示的解码器是硬件还是软件解码,有空再查询下chromium的相关东西。再确定。

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值