windows環境下google v8引擎的編譯
阿新 • • 發佈:2019-02-05
寫在前面:如果你電腦還沒有裝VS的話,我強烈建議你在裝VS的時候就選擇裝在預設路徑C盤,不要選擇其他盤,而且接下來的depot_tools的路徑和拉取的V8原始碼的路徑最好都選擇在C盤,具體原因在最後說明!! 弄這個玩意兒前後整整花了3天時間,中途每一個問題都折騰的你想吐,我發誓以後再TM不折騰這玩意兒了2.再寫之前,需要把這些前期工作弄好,不然中途出現啥莫名其妙的問題導致編譯不上,我可不負責1:首先,你需要一個好的翻牆工具,因為編譯V8需要谷歌的一套專用工具,而這套工具在中途會下載各個模組,所以可以這麼說,你把代理完全設定好後,編譯過程的50%的問題就沒有了。2:安裝git,記得設定代理,舉個例:git config --global http.proxy 'socks5://127.0.0.1:1080'git config --global https.proxy 'socks5://127.0.0.1:1080'3:安裝VS和winddows sdk,在安裝VS2017的時候,記得要勾選安裝win sdk,如果你已經安裝了VS,就去控制面板,看到vs那一項,右鍵點選修改,然後重新勾選安裝4:下載depot_tools,這個工具是用來獲取V8原始碼的5.把你下載的depot_tools的路徑配置在系統環境變數中,並且再新建兩個環境變數:DEPOT_TOOLS_WIN_TOOLCHAIN,設定成:0GYP_MSVS _VERSION,設定成:2017注意:如果你的VS路徑不是在C盤(預設安裝在C盤的不用設定),你還需要在環境變數下設定下VS 的根目錄路徑:GYP_MSVS_OVERRIDE_PATH=//你的vs根目錄6:新建一個目錄,用來放V8的原始碼,比如C:\V8,然後用管理員模式開啟CMD,進入到C:\V8,輸入gclient,這個命令會谷歌網站給你下載一些模組,給你配置一些東西之類的,所以到這裡,你的翻牆的工具就起作用了7:大概會下個一兩百M的東西,等它執行完畢後,我們就可以獲取V8的原始碼了8:獲取V8:輸入命令:fetch v8,整個V8所有的東西包括工具之類的下載下來,大概有一個多G,因為翻牆工具可能不會太穩定,中途 斷線之類的,如果中途斷線了,使用下這個命令:gclient sync,它會給你接著下 9:就慢慢等吧,如果中途有任何的報錯,一般都是連線不上谷歌的某些地址報錯,超時之類的,這就說明你的代理還是沒設定好,所以我在開頭就說了,只要你代理沒問題,基本就消除了一半了問題了,10:所以東西沒報錯,全都下載完之後,進入到V8的原始碼路徑,然後開始build:cd v8python tools\dev\v8gen.py x64.releaseninja -C out.gn\x64.release以上是用命令列編譯的,如果你需要在VS的IDE裡編譯的話,就採用下面這種方式:cd v8gn gen --ide=vs out.gn\x64_solution然後就會發現在out.gn有一個all.sln,然後開啟,生成就行了 整個編譯的時間依你的機器決定,等編譯完成後,就會發現在out.gn的輸出目錄下有這些檔案:v8.dll.libv8.dllicui18n.dll.libicui18n.dllicuuc.dll.libicuuc.dllv8_libplatform.dll.libv8_libplatform.dllv8_libbase.dll.libv8_libbase.dll到此,整個過程結束總結下來,我在此過程遇到的兩個最耗時的問題就是下面兩個了:1:還是VPN的問題,如果在中途出現的任何連線問題,下載不了的問題,超時的問題,都是因為你的代理沒設定好,而且這些問題去谷歌搜尋都還不一定找得到相關解決辦法,因為老外沒有牆,所以他們壓根就不會出現這種操蛋的問題2. 中途出現過一個路徑的問題,也是折騰了很久,我在編譯V8之前就已經安裝了VS2017,只不過裝在了E盤,之後我下載的depot_tools在是選擇在了E盤,總之沒有在C盤,期間什麼獲取原始碼什麼的,這些步驟都沒問題,等到最後python tools\dev\v8gen.py x64.release或者gn gen --ide=vs out.gn\x64_solution開始build的時候,python就給我報什麼路徑錯誤,最後弄了很久,甚至去它的這個python原始碼加了幾行程式碼把這些路徑都打印出來,才發現,有些標頭檔案是在C盤,有些標頭檔案是在E盤,反正就是過不了python這關,於是我想,該不會統一要把原始碼和VS都放在C盤吧,於是重新解除安裝了VS,裝在了C盤,也把depot_tools下載到了C盤,V8原始碼也獲取放在了C盤,最後才成功,然後能編譯。但是我仍不能百分百是路徑的錯誤,因為我看官方文件,包括其他文章,也沒有說明這些東西都必須放在C盤,但是這麼做了後,問題也就確實沒有出現了,如果有朋友知道是什麼問題,可以留言