1. 程式人生 > >從原始碼編譯cef-chromium的正確步驟

從原始碼編譯cef-chromium的正確步驟

之前編譯過cef-chromium的原始碼,但是找不到之前的原始碼工程了。幸好壓縮原始碼還存在電腦裡。

現在又要編譯一下,因為需要定製自己需要的功能,這裡就把編譯過程記錄一下,以免以後還會遇到,也分享給需要的讀者。

下載cef-chromium的原始碼需要到google網站去,但這個網站被國家封了,所幸我通過其它渠道下載了全部原始碼。

打包的原始碼在這裡下載:

連結:http://pan.baidu.com/s/1pLqAeD1 密碼:0b62

我將原始碼解壓到了E盤cef-chromium目錄下,路徑為:E:\cef-chromium

裡面有cef、chromium、depot_tools3個目錄。

我的機器是Win7 64位的系統,安裝了VS2013和DirectX SDK。

開啟VS2013命令列工具,進入路徑E:\cef-chromium\chromium\src\cef,然後輸入cef_create_projects.bat按回車,

提示python.bat不是內部或外部命令。

這裡是編譯依賴工具環境沒有配上,在控制檯介面輸入:

set PATH=E:\cef-chromium\depot_tools;%PATH%

然後再次輸入cef_create_projects.bat,就可以生成VS2013的工程了。


但是我不會用VS2013開啟進行編譯,為什麼?因為開啟VS2013進行編譯,VS2013也是呼叫ninja進行編譯,無法觀察到具體的編譯細節和進度,就算編譯

出現錯誤了也不會停止,所以最好在命令列下通過ninja進行編譯。

切換到VS2013命令列,然後進入目錄:

cd E:\cef-chromium\chromium\src\out\Release

然後輸入:

ninja

接著就開始編譯了。

編譯過了一會出現了一個錯誤:


error:C2220 警告被視為錯誤。這個是警告等級在搗鬼,需要把工程裡的編譯警告等級降低!

工程檔案很多,需要批量替換,替換工具沒有限制,我用QtCreator進行批量替換。

需要把E:\cef-chromium\chromium\src目錄下的所有.ninja檔案裡的/WX換成/W3,這樣警告才不會被當做錯誤處理。


直接替換了去。然後控制檯下輸入ninja,繼續編譯。

接來下又會出現編譯錯誤停止,這就是第二個坑了:

[6/9584] ACTION Copying D3D Compiler DLL...
FAILED: E:\cef-chromium\depot_tools\python276_bin\python.exe gyp-win-tool action-wrapper environment
.x86 copy_compiler_dll_target_copy_dll_d5e7737f8056aa69e632ead4d36d2ac1..rsp ..\..\third_party\angle
\src

ACTION Copying D3D Compiler DLL
說明這是個拷貝動作出現錯誤,進入目錄:

cd E:\cef-chromium\chromium\src\third_party\angle\src

發現有個copy_compiler_dll.bat,編輯開啟此檔案,發現有一個拷貝d3dcompiler_46.dll的命令,

直接把這個命令刪除即可,於是copy_compiler_dll.bat的內容變成了這樣:

@echo off
set _arch=%1
set _arch=%_arch:Win32=x86%
改然後切換到命令列,輸入ninja,繼續編譯。

接下來就是漫長的編譯過程,根據CPU效能來決定編譯時間,通常需要2~6小時。

到最後快編譯完成時,又出現了一個錯誤,編譯停止了,這是最後一個坑:

e:\cef-chromium\chromium\src\cef\libcef\browser\chrome_scheme_handler.cc(262) : error C2065: “None
”: 未宣告的識別符號

出問題的是這一句:

parser.Add("CEF",base::StringPrintf("%d.%d.%d",CEF_VERSION_MAJOR,CHROME_VERSION_BUILD,CEF_REVISION));

這其實是

CEF_REVISION被定義成了None造成的

開啟E:\cef-chromium\chromium\src\cef\include\cef_version.h

可看到

#define CEF_REVISION None
而這個None卻未被定義。

因此,直接改成

#defineCEF_REVISION1930
然後儲存。切換到控制檯,輸入ninja繼續編譯。
最後的連結需要花不少時間,最終還是編譯成功了。

有圖為證,看一下編譯結果吧:


VS2013命令列需要設定的變數:
set DXSDK_DIR=C:\Program Files (x86)\Microsoft DirectX SDK (August 2006)
set GYP_GENERATORS=ninja,msvs-ninja
set GYP_MSVS_VERSION=2013
set PATH=K:\cef-chromium\depot_tools;D:\vc2013\bin;D:\vc2013\sdk\Perl516\bin;D:\vc2013\PlatformSDK_8.1\bin\x86;D:\vc2013\sdk\Python278;D:\vc2013\sdk\Python278\DLLs;D:\vc2013\sdk\gles\bin;D:\vc2013\sdk\icu\bin;D:\vc2013\sdk\ruby\bin;D:\vc2013\sdk\tbb\bin;D:\vc2013\sdk\WMDM\lib;D:\vc2013\sdk\git\bin;D:\DirectXSDK2010\Utilities\bin\x86;D:\vc2013\sdk\cmake\bin;D:\vc2013\sdk\gyp;D:\cef_binary_3.2272.2077_windows32\Release;D:\vc2013\sdk\duilib\bin;D:\vc2013\sdk\irrlicht\bin;D:\vc2013\sdk\cef-normal;%PATH%


set INCLUDE=D:\vc2013\sdk\angle\include;D:\vc2013\include;D:\vc2013\PlatformSDK_8.1\Include\um;D:\vc2013\include;D:\vc2013\PlatformSDK_8.1\Include\shared;D:\vc2013\sdk\openvg\include;D:\vc2013\sdk\opengl\include;D:\vc2013\sdk\ruby\include;D:\vc2013\sdk\Python278\include;D:\vc2013\sdk\mysql\include;D:\vc2013\sdk\icu\include;D:\vc2013\sdk\atlmfc\include;D:\vc2013\sdk\WMDM\inc;D:\vc2013\sdk\tbb\include;D:\DirectXSDK2010\Include;D:\vc2013\PlatformSDK_8.1\Include\winrt;D:\cef_binary_3.2272.2077_windows32\include;D:\cef_binary_3.2272.2077_windows32;D:\vc2013\sdk\duilib\include;D:\vc2013\sdk\irrlicht\include;D:\vc2013\sdk\cef-normal\inc


set LIB=D:\vc2013\lib;D:\vc2013\sdk\dx11\lib;D:\vc2013\PlatformSDK_8.1\Lib\winv6.3\um\x86;D:\vc2013\sdk\gnuwin32\lib;D:\vc2013\sdk\opengl\lib;D:\vc2013\sdk\tbb\lib\ia32\vc10;D:\vc2013\sdk\ruby\lib;D:\vc2013\atl\lib;D:\vc2013\sdk\Python278\libs;D:\vc2013\sdk\gles\lib;D:\vc2013\sdk\mysql\lib;D:\vc2013\sdk\icu\lib;D:\vc2013\sdk\angle\lib;D:\vc2013\sdk\atlmfc\lib;D:\vc2013\sdk\WMDM\lib;D:\vc2013\sdk\tbb\lib;D:\vc2013\sdk\WMDM\lib;D:\vc2013\sdk\git\lib;D:\DirectXSDK2010\Lib\x86;D:\cef_binary_3.2272.2077_windows32\Release;D:\vc2013\sdk\duilib\Lib;D:\vc2013\sdk\irrlicht\lib;D:\vc2013\sdk\cef-normal\lib

相關推薦

原始碼編譯cef-chromium正確步驟

之前編譯過cef-chromium的原始碼,但是找不到之前的原始碼工程了。幸好壓縮原始碼還存在電腦裡。 現在又要編譯一下,因為需要定製自己需要的功能,這裡就把編譯過程記錄一下,以免以後還會遇到,也分享給需要的讀者。 下載cef-chromium的原始碼需要到google網站

Windows原始碼手動安裝wekan實踐步驟(Install manually from Source):

這是最複雜的方式,不過擁有最大的靈活性,適應自己的需求。 第一步:首先得安裝Node.js,不能太高,官網支援0.10.40(https://nodejs.org/en/blog/release/v0.10.40/)因此我又重新退回低版本,下載https://nodejs.org/dist/

CentOS 原始碼編譯並安裝 Nginx

Linux 系統要求 Nginx 在 Linux 作業系統下執行的時候,要想獲取高併發能力,要求 Linux 核心必須在 2.6 以上,可通過以下命令檢視 Linux 核心版本。 $ uname -r 2.6.18-128.e15 安裝 Nginx 的必備軟體 通過以下命令安裝使用

Linux原始碼編譯安裝程式詳解

1.原始碼編譯概述 1.1 使用原始碼安裝軟體的優點: 獲得最新的軟體版本,及時修復bug 根據使用者需要,靈活定製軟體功能 1.2 應用場合舉例 安裝較新版本的應用程式時 當前安裝的程式無法滿足需要時  需要為應用程式新增新的功能時

golang 原始碼編譯記錄

下載golang 原始碼 筆者寫此部落格的時候最新是go 1.10.1 版本。 原始碼目錄 /root/source_bk/go_source/go 基本編譯流程解釋 go 語言編譯器自1.5版本開始自舉 ( 使用go編譯器編譯go編譯器 ) 。所

Python3.7.1原始碼編譯安裝

#!/bin/bash #確保shell 切換到當前shell 指令碼資料夾 current_file_path= ( c

linux下原始碼編譯比特幣客戶端

下載原始碼 這個是master分支的,建議在tag裡選最新的穩定版,目前是v0.14.2 直接下載zip,別clone了,clone很慢。 編譯程式碼 不妨先看看官方的編譯說明 ps: 第一手的官方的資源一般都是最好的,有問題了最好

在linux通過原始碼編譯安裝redis詳細步驟

1.下載原始碼包 [[email protected] opt]# wget http://download.redis.io/releases/redis-4.0.10.tar.gz 2.解壓縮redis [[email protected] opt]# tar

在win10裡原始碼編譯nodejs的安裝包和學習原始碼

大家其實都是從網站上下載直接安裝檔案的,為什麼還要從原始碼安裝呢?可能原因就兩個,一個想自己優化,新增一個特定的東西;另一個想學習nodejs的實現,知道為什麼這樣實現的。我這裡主要為學習nodejs的實現,所以要到下面的網站下載原始碼:https://nodejs.org/

ARM64原始碼編譯docker(v1.9.1)

在X86_64機器fedora系統下,不要使用官方編譯的rpm包,交叉編譯bootstrap會出現異常,使用原始碼編譯的go. 1.編譯X86_64的go binary cd /root git clone https://github.co

零開始學習區塊鏈技術(一)--原始碼編譯比特幣

寫在開始之前,為什麼你一定要學習區塊鏈技術? 技術的變革和迭代一直在飛速發展中,作為有著15年程式開發經驗的我,常常在思考現在的我們到底改如何做,到底應該學習些什麼,才能跟上新的時代變革,保持自身的競爭力,並且能為這個世界帶來更好的改變呢? 答案是,學習

OpenCV安裝流程及原始碼編譯方法 + 配置VS

本篇文章記錄了安裝OpenCV 3.4.2及配置VS2017的方法,以及利用CMake從原始碼編譯適用於老版本VS2013的OpenCV 3.4.2的編譯及配置流程。本文也可以作為其他OpenCV及VS版本安裝配置方法的參考。 1 安裝OpenCV 3.4.2

原始碼編譯TensorFlow CPU版本

1 安裝Python3 的依賴 sudo apt-get install python3-numpy python3-dev python3-pip python3-wheel 2從原始碼安裝Bazel sudo apt-get install ope

Linux 原始碼編譯安裝 OpenSSH

https://blog.csdn.net/bytxl/article/details/46639073   Linux 從原始碼編譯安裝 OpenSSH以及各問題解決 2015年06月25日 17:37:49 by

Ubuntu16.04 原始碼編譯LLVM+Clang

最近在安裝一個Vim自動補全外掛——YouCompleteMe,這個外掛可以根據語義補全,因此需要Clang這個庫,不過LLVM的官網並沒有提供Ubuntu的預編譯二進位制版本,所以需要自己從原始

Linux 原始碼編譯安裝 OpenSSH以及各問題解決

簡單的說 OpenSSH 是一組安全遠端的連線工具,主要包括了幾個部份:ssh、sshd、scp、sftp、ssh-keygen、ssh-agent、ssh-add。OpenSSH 安裝配置比較複雜,難點在配置,特別是在 VPS 中,配置不當就完全無法連結 VPS 了。

原始碼編譯OSG

Windows 下: 2。使用CMake工具編譯OSG。     1)把CMakeLists.txt 拖放到CMake軟體的GUI介面上,可以選擇更改安裝路徑:"Where to build the binaries"。該路徑是OSG的初始編譯路徑。     2)點選 '

原始碼編譯docker (moby)

下面是從原始碼編譯最新(2018-03-27)的 docker/cli 和 moby 的詳細過程第1步     安裝 ubuntu 16.04下載最新的 ubuntu-16.04.4-desktop-amd64.iso 安裝後# cat /etc/os-release NAM

【指導】原始碼編譯安裝Git-Ubuntu

1 下載原始碼包 2 編譯安裝Git 1)安裝編譯原始碼包的工具: $sudo apt-get installlibcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev 2)展開原始碼包,進入: $t

使用交叉混合編譯原始碼編譯龍芯上的llvm/clang-3.4

目標: 使用交叉混合編譯(hybrid cross-compiling)從原始碼編譯龍芯上的llvm/clang-3.4。之所以是混合交叉編譯而不是交叉編譯,是因為編譯的過程中,大部分程式碼是由效能較高的主體(Host)平臺編譯,而少部分程式碼是由效能較低的目