日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

v8编译

發(fā)布時間:2024/4/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 v8编译 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

http://code.google.com/apis/v8/build.html

http://code.google.com/p/v8/wiki/BuildingOnWindows

環(huán)境:64位Windows7、vs2008

1、準(zhǔn)備:三個工具Subversion、Python、SCons。

設(shè)置環(huán)境變量保證在cmd中運(yùn)行 python --version、scons --version、svn --version 三個命令后能看到相應(yīng)的版本號。

2、下載v8

svn checkout http://v8.googlecode.com/svn/trunk/? v8

3、編譯v8

進(jìn)入到v8目錄,然后運(yùn)行:

scons env=”PATH:C:/Program Files (x86)/Microsoft Visual Studio 9.0/VC/bin;C:/Program Files (x86)/Microsoft Visual Studio 9.0/Common7/IDE;C:/Program Files/Microsoft Visual Studio 9.0/Common7/IDE;C:/Program Files (x86)/Microsoft Visual Studio 9.0/Common7/Tools,INCLUDE:C:/Program Files (x86)/Microsoft Visual Studio 9.0/VC/include;C:/Program Files (x86)/Microsoft SDKs/Windows/v6.0A/Include;C:/Program Files/Microsoft SDKs/Windows/v6.0A/Include,LIB;C:/Program Files (x86)/Microsoft Visual Studio 9.0/VC/lib;C:/Program Files (x86)/Microsoft SDKs/Windows/v6.0A/Lib;C:/Program Files/Microsoft SDKs/Windows/v6.0A/Lib

也可以不在v8目錄里,這時要運(yùn)行:

scons –C <v8的路徑> env=”….”;

vs2008在64位win7里被分裂開了所以這個命令比32的麻煩。

/v8/obj文件夾里就是生成的文件

?

4、一個例子hello_world

v8文件夾里建一個hello_world.cpp

?

int main(int argc, char* argv[]) {
? // Create a string containing the JavaScript source code.
? String source = String::New("'Hello' + ', World'");
? // Compile the source code.
? Script script = Script::Compile(source);
?
? // Run the script to get the result.
? Value result = script->Run();
? // Convert the result to an ASCII string and print it.
? String::AsciiValue ascii(result);
? printf("%s/n", *ascii);
? return 0;
}

?

沒想到編譯這么簡單的一段代碼卻出了問題,用了一晚上外加一上午的時間搞定了問題。

一開始我是按照網(wǎng)站上說的運(yùn)行??? cl /Iinclude hello_world.cpp v8.lib

結(jié)果是:

用于 x64 的 Microsoft (R) C/C++ 優(yōu)化編譯器 15.00.30729.01 版
版權(quán)所有(C) Microsoft Corporation。保留所有權(quán)利。
hello_world.cpp
Microsoft (R) Incremental Linker Version 9.00.30729.01
Copyright (C) Microsoft Corporation.? All rights reserved.
/out:hello_world.exe
hello_world.obj
v8.lib
hello_world.obj : error LNK2019: 無法解析的外部符號 "public: __cdecl v8::HandleS
cope::~HandleScope(void)" (??1HandleScope@v8@@QEAA@XZ),該符號在函數(shù) main 中被引
。。。。。。。。。。。。
hello_world.exe : fatal error LNK1120: 11 個無法解析的外部命令

?

這個錯誤的原因是用錯了編譯器!!!v8目錄里的v8.lib是個32位的庫,所以應(yīng)該用“Visual Studio 2008 命令提示”,而我之前用的是“Visual Studio 2008 x64 Win64 命令提示”和“Visual Studio 2008 x64 兼容工具命令提示”。

運(yùn)行“Visual Studio 2008 命令提示”,然后進(jìn)入v8目錄,運(yùn)行cl /Iinclude hello_world.cpp v8.lib

結(jié)果:

?

用于 80x86 的 Microsoft (R) 32 位 C/C++ 優(yōu)化編譯器 15.00.30729.01 版
版權(quán)所有(C) Microsoft Corporation。保留所有權(quán)利。
hello_world.cpp
Microsoft (R) Incremental Linker Version 9.00.30729.01
Copyright (C) Microsoft Corporation.? All rights reserved.
/out:hello_world.exe
hello_world.obj
v8.lib
v8.lib(api.obj) : 找到 MSIL .netmodule 或使用 /GL 編譯的模塊;正在使用 /LTCG 重
新啟動鏈接;將 /LTCG 添加到鏈接命令行以改進(jìn)鏈接器性能
Microsoft (R) Incremental Linker Version 9.00.30729.01
Copyright (C) Microsoft Corporation.? All rights reserved.
/out:hello_world.exe
hello_world.obj
v8.lib
v8.lib(platform-win32.obj) : error LNK2001: 無法解析的外部符號 __imp__accept@12
v8.lib(platform-win32.obj) : error LNK2001: 無法解析的外部符號 __imp__listen@8
v8.lib(platform-win32.obj) : error LNK2001: 無法解析的外部符號 __imp__send@16
。。。。。。。。。。。。。。。。。。
v8.lib(platform-win32.obj) : error LNK2001: 無法解析的外部符號 __imp__connect@12
hello_world.exe : fatal error LNK1120: 19 個無法解析的外部命令

錯誤的原因是沒有把"ws2_32.lib"、("WSock32.lib")、"Winmm.lib"加進(jìn)來。

解決辦法:

在hello_world.cpp里加入

#pragma comment(lib,"ws2_32.lib")
#pragma comment(lib,"WSock32.lib")
#pragma comment(lib,"Winmm.lib")
#include <v8.h>
using namespace v8;

然后運(yùn)行 cl /Iinclude hello_world.cpp v8.lib

用于 80x86 的 Microsoft (R) 32 位 C/C++ 優(yōu)化編譯器 15.00.30729.01 版
版權(quán)所有(C) Microsoft Corporation。保留所有權(quán)利。
hello_world.cpp
Microsoft (R) Incremental Linker Version 9.00.30729.01
Copyright (C) Microsoft Corporation.? All rights reserved.
/out:hello_world.exe
hello_world.obj
v8.lib
v8.lib(api.obj) : 找到 MSIL .netmodule 或使用 /GL 編譯的模塊;正在使用 /LTCG 重
新啟動鏈接;將 /LTCG 添加到鏈接命令行以改進(jìn)鏈接器性能
Microsoft (R) Incremental Linker Version 9.00.30729.01
Copyright (C) Microsoft Corporation.? All rights reserved.
/out:hello_world.exe
hello_world.obj
v8.lib
正在生成代碼
已完成代碼的生成

?

這回Ok了 :P

也可以不用改 hello_world.cpp ,直接運(yùn)行??? v8>cl /Iinclude hello_world.cpp v8.lib Winmm.lib WSock32.lib ws2_32.lib

運(yùn)行v8目錄下的 hello_world.exe,輸出:Hello, World!

大功告成 :)

?

?

?

?

?

http://lch361.spaces.live.com/blog/cns!2C632B54B8D9AB49!435.entry

總結(jié)

以上是生活随笔為你收集整理的v8编译的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。