• 在UOS系统中编译CEF源码


     一、下载cef代码

    git clone git@bitbucket.org:chromiumembedded/cef.git

    二、执行自动下载代码

            由于chromium的代码很大,至少需要准备大概80G的硬盘!!!整个代码量太大还是多准备一些空间吧(强烈建议使用固态硬盘保存否则编译时会很慢),因此我们可能需要多次下载chromium代码分批下载下来。

    cd cef/tools/automate

       我的python版本为:Python 3.8.18,应该python3版本都可以。

    python3 automate-git.py --download-dir=/media/arv000/3a8d3186-5909-4fb7-9a5d-a450b5d66d09/work/cef2/chromium --depot-tools-dir=/media/arv000/3a8d3186-5909-4fb7-9a5d-a450b5d66d09/work/cef2/depot_tools --no-distrib --x64-build --branch=5938 

    --download-dir:chromium的代码地址

    --depot-tools-dir:depot-tools编译工具下载地址

    --x64-build:编译成amdx86_64

    --branch=5938 :选择cef的分支为5938,建议使用固定分支,不推荐使用master因为chromium的版本会固定下来。

    如果失败了不要悲伤,这里有可能是因为网络或者超时等原因造成的。

    将chromium/chromium/_gclient_src_XXX目录修改为chromium/chromium/src目录,然后继续执行以下命令确保分批次下载好chromium的源码

    分批次下载如下命令:

    第一步:先将最新的一次提交clone下载(如果没有git才执行该代码,有了直接跳过这个步骤!!!)

    第二步:分步pull主线代码

    1. git pull --depth 1
    2. git pull --depth 100
    3. git pull --depth 1000
    4. git pull --depth 30000
    5. git pull
    6. git checkout main
    7. git pull

    第三步:更新tags

    3.1 获取所有tag号信息,将所有的tag号保存在tags.log文件中

    git ls-remote --tags origin > tags.log
    

     3.2 根据每一个tag号单独下载代码

    接下来就是漫长的等待过程

    1. #!/bin/bash
    2. lists=`grep 'refs/tags/' tags.log | awk -F' ' '{print $2}'`
    3. for tag in $lists
    4. do
    5. git fetch origin $tag
    6. done

    3.3 整体同步下载代码

    git fetch --tags

    第四步:继续执行命令

    python3 automate-git.py --download-dir=/media/arv000/3a8d3186-5909-4fb7-9a5d-a450b5d66d09/work/cef2/chromium --depot-tools-dir=/media/arv000/3a8d3186-5909-4fb7-9a5d-a450b5d66d09/work/cef2/depot_tools --no-distrib --x64-build --branch=5938 

    在执行过程中需要修改depot_tools脚本中的缓存大小。

    vim depot_tools/gclient_utils.py中的缓存大小。默认2G修改为4G。由于git在使用过程中会使用大量的内存导致系统性能。所以这里做了限制,可以根据计算机的内存设备进行设置。我的系统是16G的因此设置为4G也不会有很大的影响。

    1. def DefaultDeltaBaseCacheLimit():
    2. """Return a reasonable default for the git config core.deltaBaseCacheLimit.
    3. The primary constraint is the address space of virtual memory. The cache
    4. size limit is per-thread, and 32-bit systems can hit OOM errors if this
    5. parameter is set too high.
    6. """
    7. if platform.architecture()[0].startswith('64'):
    8. return '2g'
    9. return '512m'

     仅仅编译不下载代码命令如下:

    python3 automate-git.py --download-dir=/media/arv000/3a8d3186-5909-4fb7-9a5d-a450b5d66d09/work/cef2/chromium --depot-tools-dir=/media/arv000/3a8d3186-5909-4fb7-9a5d-a450b5d66d09/work/cef2/depot_tools --no-distrib --x64-build --branch=5938 --no-chromium-update  --no-depot-tools-update --no-cef-update
    

  • 相关阅读:
    坑 | NIO - [AsynchronousFileChannel + CompletionHandler]
    新框架Nue.js以及如何搭建框架(详细介绍)
    河南科技大学2023考研获取真题大纲的正规途径有哪些?
    GPE(Grafana+Prometheus+Exporter)项目实战之Golang篇(上)
    图像操作编程:实现图像的旋转、缩放和灰度化
    值得拥有的 12 大最佳照片恢复软件 [持续更新]
    selenium 等待方式
    pmp新考纲全真模拟题,提分敏捷+情景!
    【ElasticSearch系列-07】ES的开发场景和索引分片的设置及优化
    K8S 1.20 弃用 Docker 评估之 Docker 和 OCI 镜像格式的差别
  • 原文地址:https://blog.csdn.net/arv002/article/details/133342661