Chromium交叉编译日志

Chrome交叉编译日志

一直以来想自行编译一下Chrome,最近重新开始玩开发板(和树莓派类似),装上了Debian 7.4(Wheezy),发现Chrome只有33.0版,(到目前2015.12.08为止,Chrome stable版本号为47),于是趁此机会折腾了一番。Google了一番,然后发现了这个Chromium交叉编译日志_第1张图片
查看本机libc6版本,确定是2.13且upgrade无果,于是自行强行安装了新版本的libc6:

Debian wheezy安装新版libc6

  • kill桌面环境

    sudo /etc/init.d/slim stop
    
  • 添加源

    deb http://ftp.debian.org/debian sid main

    添加到

    /etc/apt/sources.list
  • 更新软件源

    sudo apt-get update
  • 安装新版libc6

    sudo apt-get -t sid install libc6-amd64 libc6-dev libc6-dbg
    
  • [重要]安装完成后记得把刚添加的源删掉

交叉编译Chromium

目标:

由于开发板是ARM架构,我们需要在x86平台下编译出Chromium的ARM版程序

我的环境:

  • 使用Parallels Desktop虚拟机运行的64位Ubuntu 14.04
  • 内存8GB
  • CPU 六线程i7-4770HQ虚拟处理器
  • 30GB的剩余空间(最后用掉了约25GB)

编译Chromium

一、建立工作目录

$ mkdir -pv ~/chromium
$ cd ~/chromium

二、下载depot_tools工具包

$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git 

执行结束之后会在当前目录下产生一个目录depot_tools,里面是许多之后会用到的小工具。
Chromium交叉编译日志_第2张图片

三、把depot_tools加入PATH下

$ export PATH=$PATH:~/chromium/depot_tools

四、下载最新的Chromium代码

$ fetch --nohooks chromium

代码总共大约8GB,校园网IPv6抓取速度几乎满速(10MB/s)
完成后将看到src目录
五、准备编译环境

$ cd src && ./build/install-build-deps.sh
$ sudo apt-get install gcc-arm-linux-gnueabihf
$ sudo apt-get install g++-4.8-multilib-arm-linux-gnueabihf
$ ./build/install-build-deps.sh --arm
$ gclient sync
$ export GYP_CROSSCOMPILE=1
$ export GYP_DEFINES="target_arch=arm arm_float_abi=hard component=shared_library linux_use_gold_flags=1"
$ gclient runhooks

六、开始编译
带sandbox的Release版:

$ ninja -C out/Release chrome chrome_sandbox

不带sandbox的Release版:

$ ninja -C out/Release chrome

Debug版:

$ ninja -C out/Debug chrome

经过漫长的等待(六线程全100%占用,超频至3.2Ghz,两小时左右)
所有编译出來的东西都放在out/Release或out/Debug下。

在ARM环境下运行

$ ./chrome

会发现一个错误”Running without the SUID sandbox!”,按照给出的链接解决即可
或者直接

$ ./chrome --no-sandbox

运行后可以看到一个Warning:『google api keys are missing some functionality of chromium will be disabled』,作为一个码农,我选择了无视它
然后。。。。
发现无法登陆Google账户,Google了一下Warning发现『Since Chromium version 35, Debian does not provided API keys anymore. 』
为了能正常使(同)用(步),只好自己申请API keys

让Chromium正常工作

准备工作:

  • 一个Google账号,相信大家都有

步骤:

一、 加入Group(必须) [email protected]
二、前往 https://cloud.google.com/console
三、Create Project(随意取个名字,比如MyChromiumProject)
四、前往API Manager页面,启用Chrome相关的API,参考:
Chromium交叉编译日志_第3张图片
五、前往Credentials页面,在OAuth consent screen处填写Product Name然后保存
六、在Credentials页面添加一个API key,选择Browser key,Referers留空即可
七、再添加一个OAuth 2.0 client ID,type选Other即可
八、到此,已经有了API key,client ID 和 client secret

$ export GOOGLE_API_KEY="your_api_key"
$ export GOOGLE_DEFAULT_CLIENT_ID="your_client_id"
$ export GOOGLE_DEFAULT_CLIENT_SECRET="your_client_secret"

再启动Chrome

$ ./chrome

即可正常登陆Google账号并同步了

有任何疑问可以发邮件联系我:[email protected]

你可能感兴趣的:(Chromium交叉编译日志)