I am trying to build ry/v8worker2 on windows.
(我正在尝试在Windows上构建ry / v8worker2。)
Everything goes fine until the point where I run go test
which then complains about the pkg-config setup. (一切正常,直到我进行go test
为止,然后抱怨pkg-config设置。)
This is the pkg-config file which is generated:
(这是生成的pkg-config文件:)
Name: v8
Description: v8
Version: xxx
Cflags: -IC:Usersandyreagosrcgithub.com
eaandrewv8worker2v8include
Libs: out/v8build/obj/v8_monolith.lib
And this is the output when go test
is executed:
(这是执行go test
的输出:)
go build github.com/reaandrew/v8worker2: invalid flag in pkg-config --libs: out/v8build/obj/v8_monolith.lib
FAIL github.com/reaandrew/v8worker2 [build failed]
As I say, the entire compilation went fine and files were created but at the end something is not correct.
(就像我说的那样,整个编译过程都很好,并且创建了文件,但是最后有些不正确。)
The only modifications to the build.py I have made to try and make this work on windows as here: (我尝试对build.py进行的唯一修改,使其在Windows上可以正常运行,如下所示:)
diff --git a/build.py b/build.py
index 2cb5e6a..6f482c8 100755
--- a/build.py
+++ b/build.py
@@ -82,7 +82,7 @@ GCLIENT_SOLUTION = [
]
def main():
- lib_fn = os.path.join(prebuilt_path, platform_name(), "libv8_monolith.a")
+ lib_fn = os.path.join(root_path.replace("\","/"),"/out/v8build/obj/v8_monolith.lib")
if args.rebuild or not os.path.exists(lib_fn):
print("Rebuilding V8")
lib_fn = Rebuild()
@@ -99,9 +99,9 @@ def Rebuild():
EnsureDeps(v8_path)
- gn_path = os.path.join(depot_tools, "gn")
+ gn_path = os.path.join(depot_tools, "gn.bat")
assert os.path.exists(gn_path)
- ninja_path = os.path.join(depot_tools, "ninja")
+ ninja_path = os.path.join(depot_tools, "ninja.exe")
assert os.path.exists(ninja_path)
gn_args = GN_ARGS.replace('
', ' ')
@@ -144,7 +144,8 @@ def EnsureDeps(v8_path):
env = os.environ.copy()
# gclient needs to have depot_tools in the PATH.
env["PATH"] = depot_tools + os.pathsep + env["PATH"]
- subprocess.check_call(["gclient", "sync", "--spec", spec], + gclient_path = os.path.join(depot_tools, "gclient.bat")
+ subprocess.check_call([gclient_path, "sync", "--spec", spec],
cwd=root_path,
env=env)
There is very little documented (that I can find) about how to compile this project on windows.
(关于如何在Windows上编译此项目的文献很少(我可以找到)。)
UPDATE: If I change the pkg-config to:
(更新:如果我将pkg-config更改为:)
Name: v8
Description: v8
Version: xxx
Cflags: -Iv8/include
Libs: -Lout/v8build/obj/v8_monolith.lib
Then the output of go test
is now:
(那么go test
的输出现在是:)
# github.com/reaandrew/v8worker2
C:UsersandyreaAppDataLocalTempgo-build332228766055\_x003.o: In function `Recv':
./binding.cc:333: undefined reference to `v8::HandleScope::HandleScope(v8::Isolate*)'
C:UsersandyreaAppDataLocalTempgo-build332228766055\_x003.o:C:Usersandyreagosrcgithub.com
eaandrewv8worker2/v8/include/v8.h:9626: undefined reference to `v8::HandleScope::CreateHandle(v8::internal::Isolate*, v8::internal::Object*)'
C:UsersandyreaAppDataLocalTempgo-build332228766055\_x003.o: In function `Recv':
./binding.cc:338: undefined reference to `v8::Value::IsFunction() const'
C:UsersandyreaAppDataLocalTempgo-build332228766055\_x003.o:C:Usersandyreagosrcgithub.com
eaandrewv8worker2/v8/include/v8.h:9717: undefined reference to `v8::V8::DisposeGlobal(v8::internal::Object**)'
C:UsersandyreaAppDataLocalTempgo-build332228766055\_x003.o:C:Usersandyreagosrcgithub.com
eaandrewv8worker2/v8/include/v8.h:9670: undefined reference to `v8::V8::GlobalizeReference(v8::internal::Isolate*, v8::internal::Object**)'
C:UsersandyreaAppDataLocalTempgo-build332228766055\_x003.o: In function `Recv':
./binding.cc:333: undefined reference to `v8::HandleScope::~HandleScope()'
./binding.cc:333: undefined reference to `v8::HandleScope::~HandleScope()'
C:UsersandyreaAppDataLocalTempgo-build332228766055\_x003.o:C:Usersandyreagosrcgithub.com
eaandrewv8worker2/v8/include/v8.h:9385: undefined reference to `v8::Locker::Initialize(v8::Isolate*)'
C:UsersandyreaAppDataLocalTempgo-build332228766055\_x003.o: In function `Send':
./binding.cc:351: undefined reference to `v8::EscapableHandleScope::EscapableHandleScope(v8::Isolate*)'
C:UsersandyreaAppDataLocalTempgo-build332228766055\_x003.o:C:Usersandyreagosrcgithub.com
eaandrewv8worker2/v8/include/v8.h:9626: undefined reference to `v8::HandleScope::CreateHandle(v8::internal::Isolate*, v8::internal::Object*)'
C:UsersandyreaAppDataLocalTempgo-build332228766055\_x003.o: In function `Send':
./binding.cc:356: undefined reference to `v8::Value::IsArrayBuffer() const'
./binding.cc:359: undefined reference to `v8::ArrayBuffer::GetContents()'
./binding.cc:367: undefined reference to `v8::ArrayBuffer::New(v8::Isolate*, void*, unsigned long long, v8::ArrayBufferCreationMode)'
C:UsersandyreaAppDataLocalTempgo-build332228766055\_x003.o:C:Usersandyreagosrcgithub.com
eaandrewv8worker2/v8/include/v8.h:1031: undefined reference to `v8::EscapableHandleScope::Escape(v8::internal::Object**)'
C:UsersandyreaAppDataLocalTempgo-build332228766055\_x003.o:C:Usersandyreagosrcgithub.com
eaandrewv8worker2/v8/include/v8.h:1022: undefined reference to `v8::HandleScope::~HandleScope()'
C:UsersandyreaAppDataLocalTempgo-build332228766055\_x003.o: In function `Send':
./binding.cc:350: undefined reference to `v8::Locker::~Locker()'
C:UsersandyreaAppDataLocalTempgo-build332228766055\_x003.o:C:Usersandyreagosrcgithub.com
eaandrewv8worker2/v8/include/v8.h:1022: undefined reference to `v8::HandleScope::~HandleScope()'
C:UsersandyreaAppDataLocalTempgo-build332228766055\_x003.o: In function `Send':
./binding.cc:350: undefined reference to `v8::Locker::~Locker()'
C:UsersandyreaAppDataLocalTempgo-build332228766055\_x003.o: In function `Print':
./binding.cc:313: undefined reference to `v8::HandleScope::HandleScope(v8::Isolate*)'
./binding.cc:319: undefined reference to `v8::String::Utf8Value::Utf8Value(v8::Local<v8::Value>)'
./binding.cc:319: undefined reference to `v8::String::Utf8Value::~Utf8Value()'
./binding.cc:313: undefined reference to `v8::HandleScope::~HandleScope()'
./binding.cc:313: undefined reference to `v8::HandleScope::HandleScope(v8::Isolate*)'
./binding.cc:319: undefined reference to `v8::String::Utf8Value::~Utf8Value()'
./binding.cc:313: undefined reference to `v8::HandleScope::~HandleScope()'
C:UsersandyreaAppDataLocalTempgo-build332228766055\_x003.o: In function `ExitOnPromiseRejectCallback(v8::PromiseRejectMessage)':
./binding.cc:65: undefined reference to `v8::Isolate::GetCurrent()'
./binding.cc:68: undefined reference to `v8::HandleScope::HandleScope(v8::Isolate*)'
C:UsersandyreaAppDataLocalTempgo-build332228766055\_x003.o:C:Usersandyreagosrcgithub.com
eaandrewv8worker2/v8/include/v8.h:9626: undefined reference to `v8::HandleScope::CreateHandle(v8::internal::Isolate*, v8::internal::Object*)'
C:UsersandyreaAppDataLocalTempgo-build332228766055\_x003.o: In function `ExitOnPromiseRejectCallback(v8::PromiseRejectMessage)':
./binding.cc:73: undefined reference to `v8::Exception::CreateMessage(v8::Isolate*, v8::Local<v8::Value>)'
./binding.cc:74: undefined reference to `v8::String::NewFromUtf8(v8::Isolate*, char const*, v8::String::NewStringType, int)'
./binding.cc:75: undefined reference to `v8::Context::Global()'
./binding.cc:75: undefined reference to `v8::Object::Get(v8::Local<v8::Value>)'
./binding.cc:77: undefined reference to `v8::Value::IsFunction() const'
./binding.cc:80: undefined reference to `v8::Message::GetScriptOrigin() const'
C:UsersandyreaAppDataLocalTempgo-build332228766055\_x003.o:C:Usersandyreagosrcgithub.com
eaandrewv8worker2/v8/include/v8.h:10289: undefined reference to `v8::Isolate::GetCurrent()'
C:UsersandyreaAppDataLocalTempgo-build332228766055\_x003.o:C:Usersandyreagosrcgithub.com
eaandrewv8worker2/v8/include/v8.h:10289: undefined reference to `v8::Isolate::GetCurrentContext()'
C:UsersandyreaAppDataLocalTempgo-build332228766055\_x003.o:C:Usersandyreagosrcgithub.com
eaandrewv8worker2/v8/include/v8.h:10289: undefined reference to `v8::Value::ToString(v8::Local<v8::Context>) const'
C:UsersandyreaAppDataLocalTempgo-build332228766055\_x003.o: In function `ExitOnPromiseRejectCallback(v8::PromiseRejectMessage)':
./binding.cc:82: undefined reference to `v8::Message::GetScriptResourceName() const'
./binding.cc:86: undefined reference to `v8::Context::Global()'
./binding.cc:86: undefined reference to `v8::Function::Call(v8::Local<v8::Value>, int, v8::Local<v8::Value>*)'
./binding.cc:90: undefined reference to `v8::Message::PrintCurrentStackTrace(v8::Isolate*, _iobuf*)'
./binding.cc:68: undefined reference to `v8::HandleScope::~HandleScope()'
C:UsersandyreaAppDataLocalTempgo-build332228766055\_x003.o: In function `ExceptionString[abi:cxx11](worker_s*, v8::TryCatch*)':
./binding.cc:126: undefined reference to `v8::HandleScope::HandleScope(v8::Isolate*)'
C:UsersandyreaAppDataLocalTempgo-build332228766055\_x003.o:C:Usersandyreagosrcgithub.com
eaandrewv8worker2/v8/include/v8.h:9626: undefined reference to `v8::HandleScope::CreateHandle(v8::internal::Isolate*, v8::internal::Object*)'
C:UsersandyreaAppDataLocalTempgo-build332228766055\_x003.o: In function `ExceptionString[abi:cxx11](worker_s*, v8::TryCatch*)':
./binding.cc:128: undefined reference to `v8::TryCatch::Exception() const'
./binding.cc:128: undefined reference to `v8::String::Utf8Value::Utf8Value(v8::Local<v8::Value>)'
./binding.cc:131: undefined reference to `v8::TryCatch::Message() const'
./binding.cc:140: undefined reference to `v8::Message::GetScriptOrigin() const'
./binding.cc:140: undefined reference to `v8::String::Utf8Value::Utf8Value(v8::Local<v8::Value>