記錄windows下編譯chromium,備忘

来源:http://www.cnblogs.com/wanxianga/archive/2017/06/19/7050052.html
-Advertisement-
Play Games

編譯windows下chromium,時間:20170619, 官方地址:https://chromium.googlesource.com/chromium/src/+/master/docs/windows_build_instructions.md 一. 系統要求: 1. 64位機器,至少8G ...


編譯windows下chromium,時間:20170619,

官方地址:https://chromium.googlesource.com/chromium/src/+/master/docs/windows_build_instructions.md

 

一. 系統要求:

1. 64位機器,至少8GB的記憶體,推薦16GB以上。(我用的Win10 64位虛擬機,記憶體按照8G來的);

2. 至少100GB的硬碟存儲空間,格式為NTFS。FAT32不支持大於4GB的文件,而在git下載時的文件可能會有20GB+;

3. Visual studio 2015 update 3;

4. Win7+ (我用的Win10編譯,此處可能有個坑,下文介紹);

二. 系統配置:

1. 安裝Visual studio 2015 update3,並安裝window sdk 14393,vs需要安裝Visual C++的三個選項包括MFC,Universal Windows Apps Development Tools > Tools (1.4.1) and Windows 10 SDK (10.0.14393);

2. 14393的SDK安裝時要安裝Debugging Tools For Windows,我一開始安裝的時候,不知為何沒有安裝這個,修複了下後,才有的;

三. 安裝depot_tools:

1. 下載depot_tools bundle,然後解壓,地址:https://storage.googleapis.com/chrome-infra/depot_tools.zip;

2. 將depot_tools放到PATH環境變數的開始位置,至少在你安裝的python和git的前面,因為depot_tools裡面會下載python,如果在你安裝的python後面的話,可能會出一些不可預期的問題;

3. 添加環境變數DEPOT_TOOLS_WIN_TOOLCHAIN,並設為0;

4. 打開cmd.exe,運行gclient,在第一次運行的時候,gclient會安裝python/msysgit等必要組件;

四. 獲取源碼:

1. 打開cmd,在你想放置源碼的位置,創建chromium文件夾併進入,mkdir chromium && cd chromium

2. fetch chromium

ps:這裡有個問題,我用的Win10帶的預設的windows defender是開啟的,此時在下載完源碼後會出現:

  1. Traceback (most recent call last):
  2. File "D:\git\google\depot_tools\gclient_scm.py", line 965, in _Clone
  3. os.path.join(self.checkout_path, '.git'))
  4. File "D:\git\google\depot_tools\gclient_utils.py", line 158, in safe_rename
  5. os.rename(old, new)
  6. WindowsError: [Error 5]
  7. [0:22:25] _____ removing non-empty tmp dir D:\google\_gclient_src_byzfvs
  8. ----------------------------------------
  9. Traceback (most recent call last):
  10. File "D:\git\google\depot_tools\gclient.py", line 2378, in <module>
  11. sys.exit(main(sys.argv[1:]))
  12. File "D:\git\google\depot_tools\gclient.py", line 2364, in main
  13. return dispatcher.execute(OptionParser(), argv)
  14. File "D:\git\google\depot_tools\subcommand.py", line 252, in execute
  15. return command(parser, args[1:])
  16. File "D:\git\google\depot_tools\gclient.py", line 2117, in CMDsync
  17. ret = client.RunOnDeps('update', args)
  18. File "D:\git\google\depot_tools\gclient.py", line 1568, in RunOnDeps
  19. work_queue.flush(revision_overrides, command, args, options=self._options)
  20. File "D:\git\google\depot_tools\gclient_utils.py", line 1112, in run
  21. self.item.run(*self.args, **self.kwargs)
  22. File "D:\git\google\depot_tools\gclient.py", line 867, in run
  23. file_list)
  24. File "D:\git\google\depot_tools\gclient_scm.py", line 166, in RunCommand
  25. return getattr(self, command)(options, args, file_list)
  26. File "D:\git\google\depot_tools\gclient_scm.py", line 450, in update
  27. self._Clone(revision, url, options)
  28. File "D:\git\google\depot_tools\gclient_scm.py", line 965, in _Clone
  29. os.path.join(self.checkout_path, '.git'))
  30. File "D:\git\google\depot_tools\gclient_utils.py", line 158, in safe_rename
  31. os.rename(old, new)
  32. WindowsError: [Error 5]
  33. Traceback (most recent call last):
  34. File "D:\git\google\depot_tools\\fetch.py", line 353, in <module>
  35. sys.exit(main())
  36. File "D:\git\google\depot_tools\\fetch.py", line 348, in main
  37. return run(options, spec, root)
  38. File "D:\git\google\depot_tools\\fetch.py", line 342, in run
  39. return checkout.init()
  40. File "D:\git\google\depot_tools\\fetch.py", line 142, in init
  41. self.run_gclient(*sync_cmd)
  42. File "D:\git\google\depot_tools\\fetch.py", line 76, in run_gclient
  43. return self.run(cmd_prefix + cmd, **kwargs)
  44. File "D:\git\google\depot_tools\\fetch.py", line 66, in run
  45. return subprocess.check_output(cmd, **kwargs)
  46. File "D:\git\google\depot_tools\python276_bin\lib\subprocess.py", line 573, in check_output
  47. raise CalledProcessError(retcode, cmd, output=output)
  48. subprocess.CalledProcessError: Command '('D:\\git\\google\\depot_tools\\python276_bin\\python.exe', 'D:\\git\\google\\depot_tools\\gclient.py', 'sync', '--no-history')' returned non-zero exit status 1

這樣的問題,主要是殺軟攔截導致刪除文件目錄失敗,禁用掉WinDefender就好了,其他殺軟或許有類似的情況,請註意,參考https://bugs.chromium.org/p/chromium/issues/detail?id=464132)

3. 源碼下載成功後,cd src,進入src目錄;

五. 編譯(最期待的時候到了):

1. 首先使用預設的編譯方式吧,使用gn gen out/Default,會在src目錄下創建out/Default目錄,並配置些編譯需要的文件;

2. 使用ninja -C out\Default chrome命令行編譯chrome,此時需要等待漫長的時間;

ps:在使用ninja編譯的時候,我這裡出現了

ninja: Entering directory `out/Default'
ninja: error: '../../native_client/toolchain/mac_x86/pnacl_newlib/bin/x86_64-nacl-objcopy', needed by 'irt_x64/obj/ppapi/native_client/nacl_irt_debuglink.inputdeps.stamp', missing and no known rule to make it

這種類似的錯誤,在src目錄下使用cmd執行gclient sync,順利解決,參考https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/tQGuR7Ur0i8;

3. 編譯好了,運行Default下的chrome.exe吧。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、GIT的定義——分散式版本控制系統 二、Git的功能特性: 1、從一般開發者的角度來看,git有以下功能: 二、Git的功能特性: 1、從一般開發者的角度來看,git有以下功能: 二、Git的功能特性: 1、從一般開發者的角度來看,git有以下功能: [1]、從伺服器上克隆完整的Git倉庫(包括 ...
  • 1.掛載iOS鏡像(先打開VM 選擇虛擬機————>設置——>CD ————>使用ISO鏡像文件 用瀏覽打開) 2.開始界面選擇 3出現下麵的界面 這是提示你是否掃描文件的完整性 我們一般在這裡選擇skip (這裡用方向鍵選擇 回車確定 ) 4.這裡是一個歡迎界面 直接next 5.本次安裝使用中文 ...
  • 1.安裝web環境,使用LNMP一鍵安裝包具體安裝步驟參考https://lnmp.org/install.html 2.安裝完成後,安裝LNMP缺少的組件ionCube組件安裝進入lnmp解壓後的目錄,執行:./addons.sh install ionCube 回車確認後就會自動安裝ionCub ...
  • 昨天遇到一個很奇怪的事情,有一臺伺服器在使用su - root命令切換到root賬號時,老是報密碼不正確。但是root密碼完全是正確的,而且可以使用賬號密碼直接ssh登錄伺服器。很是納悶,如下所示: [oracle@DB-Server ~]$ more /etc/redhat-release Red... ...
  • 傳說:所有在“<>”里的東西都是要被替換的,例如:<文件名> > iLovePeanuts.txt 命令行里不要包含“=”號 “..”代表一條命令行可以作用於不止一個文件,例如:rm file.txt file2.txt movie.mov .. .. 基本命令行 CTRL L = 清空終端 CTR ...
  • 在進程列表的下麵,有個show processes in all sessions(顯示所有用戶的進程(U)),把它勾上就能看到了 ,就是這麼簡單。 ...
  • 1.linux的目錄結構 bin:(binaries)存放二進位可執行文件 sbin(super user binaries)存放二進位可執行文件 etc:(etcetera)存放系統配置文件 usr(unix shared resources)用於存放共用的系統資源 home存放用戶文件的根目錄 ...
  • centos源更換為,163或者阿裡的。 1、首先備份 mv /etc/yum.repos.d/Centos Base.repo /etc/yum.repos.d/Centos Base.repo.backup 2、下載repo文件到目錄下 cd /etc/yum.repos.d wget http ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...