I am trying to build ry/v8worker2 on windows. Everything goes fine until the point where I run go test
which then complains about the pkg-config setup.
This is the pkg-config file which is generated:
Name: v8
Description: v8
Version: xxx
Cflags: -IC:\Users\andyrea\go\src\github.com\reaandrew\v8worker2\v8\include
Libs: out/v8build/obj/v8_monolith.lib
And this is the output when go test
is executed:
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:
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('\n', ' ')
@@ -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.
UPDATE: If I change the pkg-config to:
Name: v8
Description: v8
Version: xxx
Cflags: -Iv8/include
Libs: -Lout/v8build/obj/v8_monolith.lib
Then the output of go test
is now:
# github.com/reaandrew/v8worker2
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o: In function `Recv':
./binding.cc:333: undefined reference to `v8::HandleScope::HandleScope(v8::Isolate*)'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:9626: undefined reference to `v8::HandleScope::CreateHandle(v8::internal::Isolate*, v8::internal::Object*)'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o: In function `Recv':
./binding.cc:338: undefined reference to `v8::Value::IsFunction() const'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:9717: undefined reference to `v8::V8::DisposeGlobal(v8::internal::Object**)'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:9670: undefined reference to `v8::V8::GlobalizeReference(v8::internal::Isolate*, v8::internal::Object**)'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o: In function `Recv':
./binding.cc:333: undefined reference to `v8::HandleScope::~HandleScope()'
./binding.cc:333: undefined reference to `v8::HandleScope::~HandleScope()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:9385: undefined reference to `v8::Locker::Initialize(v8::Isolate*)'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o: In function `Send':
./binding.cc:351: undefined reference to `v8::EscapableHandleScope::EscapableHandleScope(v8::Isolate*)'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:9626: undefined reference to `v8::HandleScope::CreateHandle(v8::internal::Isolate*, v8::internal::Object*)'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_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:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:1031: undefined reference to `v8::EscapableHandleScope::Escape(v8::internal::Object**)'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:1022: undefined reference to `v8::HandleScope::~HandleScope()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o: In function `Send':
./binding.cc:350: undefined reference to `v8::Locker::~Locker()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:1022: undefined reference to `v8::HandleScope::~HandleScope()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o: In function `Send':
./binding.cc:350: undefined reference to `v8::Locker::~Locker()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_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:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_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:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:9626: undefined reference to `v8::HandleScope::CreateHandle(v8::internal::Isolate*, v8::internal::Object*)'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_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:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:10289: undefined reference to `v8::Isolate::GetCurrent()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:10289: undefined reference to `v8::Isolate::GetCurrentContext()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:10289: undefined reference to `v8::Value::ToString(v8::Local<v8::Context>) const'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_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:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o: In function `ExceptionString[abi:cxx11](worker_s*, v8::TryCatch*)':
./binding.cc:126: undefined reference to `v8::HandleScope::HandleScope(v8::Isolate*)'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:9626: undefined reference to `v8::HandleScope::CreateHandle(v8::internal::Isolate*, v8::internal::Object*)'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_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>)'
./binding.cc:142: undefined reference to `v8::Message::GetLineNumber() const'
./binding.cc:151: undefined reference to `v8::Message::GetSourceLine() const'
./binding.cc:151: undefined reference to `v8::String::Utf8Value::Utf8Value(v8::Local<v8::Value>)'
./binding.cc:158: undefined reference to `v8::Message::GetStartColumn(v8::Local<v8::Context>) const'
./binding.cc:162: undefined reference to `v8::Message::GetEndColumn(v8::Local<v8::Context>) const'
./binding.cc:167: undefined reference to `v8::TryCatch::StackTrace() const'
./binding.cc:167: undefined reference to `v8::String::Utf8Value::Utf8Value(v8::Local<v8::Value>)'
./binding.cc:167: undefined reference to `v8::String::Utf8Value::~Utf8Value()'
./binding.cc:151: undefined reference to `v8::String::Utf8Value::~Utf8Value()'
./binding.cc:140: undefined reference to `v8::String::Utf8Value::~Utf8Value()'
./binding.cc:128: undefined reference to `v8::String::Utf8Value::~Utf8Value()'
./binding.cc:126: undefined reference to `v8::HandleScope::~HandleScope()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:8779: undefined reference to `v8::V8::FromJustIsNothing()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:8779: undefined reference to `v8::V8::FromJustIsNothing()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o: In function `ExceptionString[abi:cxx11](worker_s*, v8::TryCatch*)':
./binding.cc:128: undefined reference to `v8::String::Utf8Value::~Utf8Value()'
./binding.cc:126: undefined reference to `v8::HandleScope::~HandleScope()'
./binding.cc:151: undefined reference to `v8::String::Utf8Value::~Utf8Value()'
./binding.cc:140: undefined reference to `v8::String::Utf8Value::~Utf8Value()'
./binding.cc:167: undefined reference to `v8::String::Utf8Value::~Utf8Value()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:9385: undefined reference to `v8::Locker::Initialize(v8::Isolate*)'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:7307: undefined reference to `v8::Isolate::Enter()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o: In function `worker_load':
./binding.cc:195: undefined reference to `v8::HandleScope::HandleScope(v8::Isolate*)'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:9626: undefined reference to `v8::HandleScope::CreateHandle(v8::internal::Isolate*, v8::internal::Object*)'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:9248: undefined reference to `v8::Context::Enter()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o: In function `worker_load':
./binding.cc:200: undefined reference to `v8::TryCatch::TryCatch(v8::Isolate*)'
./binding.cc:202: undefined reference to `v8::String::NewFromUtf8(v8::Isolate*, char const*, v8::String::NewStringType, int)'
./binding.cc:203: undefined reference to `v8::String::NewFromUtf8(v8::Isolate*, char const*, v8::String::NewStringType, int)'
./binding.cc:207: undefined reference to `v8::Script::Compile(v8::Local<v8::String>, v8::ScriptOrigin*)'
./binding.cc:215: undefined reference to `v8::Script::Run()'
./binding.cc:200: undefined reference to `v8::TryCatch::~TryCatch()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:9250: undefined reference to `v8::Context::Exit()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o: In function `worker_load':
./binding.cc:195: undefined reference to `v8::HandleScope::~HandleScope()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:7310: undefined reference to `v8::Isolate::Exit()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o: In function `worker_load':
./binding.cc:193: undefined reference to `v8::Locker::~Locker()'
./binding.cc:210: undefined reference to `v8::TryCatch::HasCaught() const'
./binding.cc:218: undefined reference to `v8::TryCatch::HasCaught() const'
./binding.cc:200: undefined reference to `v8::TryCatch::~TryCatch()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:9250: undefined reference to `v8::Context::Exit()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o: In function `worker_load':
./binding.cc:195: undefined reference to `v8::HandleScope::~HandleScope()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:7310: undefined reference to `v8::Isolate::Exit()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o: In function `worker_load':
./binding.cc:193: undefined reference to `v8::Locker::~Locker()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:9385: undefined reference to `v8::Locker::Initialize(v8::Isolate*)'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:7307: undefined reference to `v8::Isolate::Enter()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o: In function `worker_send_bytes':
./binding.cc:385: undefined reference to `v8::HandleScope::HandleScope(v8::Isolate*)'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:9626: undefined reference to `v8::HandleScope::CreateHandle(v8::internal::Isolate*, v8::internal::Object*)'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o: In function `worker_send_bytes':
./binding.cc:389: undefined reference to `v8::TryCatch::TryCatch(v8::Isolate*)'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:9626: undefined reference to `v8::HandleScope::CreateHandle(v8::internal::Isolate*, v8::internal::Object*)'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o: In function `worker_send_bytes':
./binding.cc:398: undefined reference to `v8::ArrayBuffer::New(v8::Isolate*, void*, unsigned long long, v8::ArrayBufferCreationMode)'
./binding.cc:401: undefined reference to `v8::TryCatch::HasCaught() const'
./binding.cc:403: undefined reference to `v8::Context::Global()'
./binding.cc:403: undefined reference to `v8::Function::Call(v8::Local<v8::Value>, int, v8::Local<v8::Value>*)'
./binding.cc:405: undefined reference to `v8::TryCatch::HasCaught() const'
./binding.cc:389: undefined reference to `v8::TryCatch::~TryCatch()'
./binding.cc:385: undefined reference to `v8::HandleScope::~HandleScope()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:7310: undefined reference to `v8::Isolate::Exit()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o: In function `worker_send_bytes':
./binding.cc:383: undefined reference to `v8::Locker::~Locker()'
./binding.cc:389: undefined reference to `v8::TryCatch::~TryCatch()'
./binding.cc:385: undefined reference to `v8::HandleScope::~HandleScope()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:7310: undefined reference to `v8::Isolate::Exit()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o: In function `worker_send_bytes':
./binding.cc:383: undefined reference to `v8::Locker::~Locker()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o: In function `v8_init':
./binding.cc:414: undefined reference to `v8::platform::CreateDefaultPlatform(int, v8::platform::IdleTaskSupport, v8::platform::InProcessStackDumping, v8::TracingController*)'
./binding.cc:415: undefined reference to `v8::V8::InitializePlatform(v8::Platform*)'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:7229: undefined reference to `v8::ResourceConstraints::ResourceConstraints()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o: In function `worker_new':
./binding.cc:424: undefined reference to `v8::ArrayBuffer::Allocator::NewDefaultAllocator()'
./binding.cc:425: undefined reference to `v8::Isolate::New(v8::Isolate::CreateParams const&)'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:9385: undefined reference to `v8::Locker::Initialize(v8::Isolate*)'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:7307: undefined reference to `v8::Isolate::Enter()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o: In function `worker_new':
./binding.cc:428: undefined reference to `v8::HandleScope::HandleScope(v8::Isolate*)'
./binding.cc:437: undefined reference to `v8::Isolate::SetPromiseRejectCallback(void (*)(v8::PromiseRejectMessage))'
./binding.cc:441: undefined reference to `v8::ObjectTemplate::New(v8::Isolate*, v8::Local<v8::FunctionTemplate>)'
./binding.cc:442: undefined reference to `v8::ObjectTemplate::New(v8::Isolate*, v8::Local<v8::FunctionTemplate>)'
./binding.cc:444: undefined reference to `v8::String::NewFromUtf8(v8::Isolate*, char const*, v8::String::NewStringType, int)'
./binding.cc:444: undefined reference to `v8::Template::Set(v8::Local<v8::Name>, v8::Local<v8::Data>, v8::PropertyAttribute)'
./binding.cc:446: undefined reference to `v8::FunctionTemplate::New(v8::Isolate*, void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::Local<v8::Signature>, int, v8::ConstructorBehavior, v8::SideEffectType)'
./binding.cc:446: undefined reference to `v8::String::NewFromUtf8(v8::Isolate*, char const*, v8::String::NewStringType, int)'
./binding.cc:446: undefined reference to `v8::Template::Set(v8::Local<v8::Name>, v8::Local<v8::Data>, v8::PropertyAttribute)'
./binding.cc:449: undefined reference to `v8::FunctionTemplate::New(v8::Isolate*, void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::Local<v8::Signature>, int, v8::ConstructorBehavior, v8::SideEffectType)'
./binding.cc:449: undefined reference to `v8::String::NewFromUtf8(v8::Isolate*, char const*, v8::String::NewStringType, int)'
./binding.cc:449: undefined reference to `v8::Template::Set(v8::Local<v8::Name>, v8::Local<v8::Data>, v8::PropertyAttribute)'
./binding.cc:452: undefined reference to `v8::FunctionTemplate::New(v8::Isolate*, void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::Local<v8::Signature>, int, v8::ConstructorBehavior, v8::SideEffectType)'
./binding.cc:452: undefined reference to `v8::String::NewFromUtf8(v8::Isolate*, char const*, v8::String::NewStringType, int)'
./binding.cc:452: undefined reference to `v8::Template::Set(v8::Local<v8::Name>, v8::Local<v8::Data>, v8::PropertyAttribute)'
./binding.cc:455: undefined reference to `v8::Context::New(v8::Isolate*, v8::ExtensionConfiguration*, v8::MaybeLocal<v8::ObjectTemplate>, v8::MaybeLocal<v8::Value>, v8::DeserializeInternalFieldsCallback)'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:9717: undefined reference to `v8::V8::DisposeGlobal(v8::internal::Object**)'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:9670: undefined reference to `v8::V8::GlobalizeReference(v8::internal::Isolate*, v8::internal::Object**)'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o: In function `worker_new':
./binding.cc:457: undefined reference to `v8::Context::Enter()'
./binding.cc:428: undefined reference to `v8::HandleScope::~HandleScope()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:7310: undefined reference to `v8::Isolate::Exit()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o: In function `worker_new':
./binding.cc:426: undefined reference to `v8::Locker::~Locker()'
./binding.cc:428: undefined reference to `v8::HandleScope::~HandleScope()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:7310: undefined reference to `v8::Isolate::Exit()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o: In function `worker_new':
./binding.cc:426: undefined reference to `v8::Locker::~Locker()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o: In function `worker_dispose':
./binding.cc:463: undefined reference to `v8::Isolate::Dispose()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:9385: undefined reference to `v8::Locker::Initialize(v8::Isolate*)'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:7307: undefined reference to `v8::Isolate::Enter()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o: In function `worker_load_module':
./binding.cc:229: undefined reference to `v8::HandleScope::HandleScope(v8::Isolate*)'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:9626: undefined reference to `v8::HandleScope::CreateHandle(v8::internal::Isolate*, v8::internal::Object*)'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:9248: undefined reference to `v8::Context::Enter()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o: In function `worker_load_module':
./binding.cc:234: undefined reference to `v8::TryCatch::TryCatch(v8::Isolate*)'
./binding.cc:236: undefined reference to `v8::String::NewFromUtf8(v8::Isolate*, char const*, v8::String::NewStringType, int)'
./binding.cc:237: undefined reference to `v8::String::NewFromUtf8(v8::Isolate*, char const*, v8::String::NewStringType, int)'
./binding.cc:239: undefined reference to `v8::Integer::New(v8::Isolate*, int)'
./binding.cc:240: undefined reference to `v8::Integer::New(v8::Isolate*, int)'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:10018: undefined reference to `v8::Value::IsTrue() const'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:10015: undefined reference to `v8::Value::IsTrue() const'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o: In function `worker_load_module':
./binding.cc:254: undefined reference to `v8::ScriptCompiler::CompileModule(v8::Isolate*, v8::ScriptCompiler::Source*, v8::ScriptCompiler::CompileOptions, v8::ScriptCompiler::NoCacheReason)'
./binding.cc:269: undefined reference to `v8::String::Utf8Value::~Utf8Value()'
./binding.cc:260: undefined reference to `v8::Module::GetModuleRequestsLength() const'
./binding.cc:261: undefined reference to `v8::Module::GetModuleRequest(int) const'
./binding.cc:262: undefined reference to `v8::String::Utf8Value::Utf8Value(v8::Local<v8::Value>)'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o: In function `worker_load_module':
C:/ProgramData/chocolatey/lib/mingw/tools/install/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/ext/new_allocator.h:86: undefined reference to `v8::String::Utf8Value::~Utf8Value()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:10061: undefined reference to `v8::ScriptCompiler::CachedData::~CachedData()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o: In function `worker_load_module':
./binding.cc:234: undefined reference to `v8::TryCatch::~TryCatch()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:9250: undefined reference to `v8::Context::Exit()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o: In function `worker_load_module':
./binding.cc:229: undefined reference to `v8::HandleScope::~HandleScope()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:7310: undefined reference to `v8::Isolate::Exit()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o: In function `worker_load_module':
./binding.cc:227: undefined reference to `v8::Locker::~Locker()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:10017: undefined reference to `v8::Value::IsTrue() const'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:10016: undefined reference to `v8::Value::IsTrue() const'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:9636: undefined reference to `v8::V8::Eternalize(v8::Isolate*, v8::Value*)'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o: In function `worker_load_module':
./binding.cc:288: undefined reference to `v8::Module::InstantiateModule(v8::Local<v8::Context>, v8::MaybeLocal<v8::Module> (*)(v8::Local<v8::Context>, v8::Local<v8::String>, v8::Local<v8::Module>))'
./binding.cc:292: undefined reference to `v8::TryCatch::HasCaught() const'
./binding.cc:293: undefined reference to `v8::TryCatch::HasCaught() const'
./binding.cc:299: undefined reference to `v8::Module::Evaluate(v8::Local<v8::Context>)'
./binding.cc:302: undefined reference to `v8::TryCatch::HasCaught() const'
./binding.cc:255: undefined reference to `v8::TryCatch::HasCaught() const'
./binding.cc:234: undefined reference to `v8::TryCatch::~TryCatch()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:9250: undefined reference to `v8::Context::Exit()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o: In function `worker_load_module':
./binding.cc:229: undefined reference to `v8::HandleScope::~HandleScope()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:7310: undefined reference to `v8::Isolate::Exit()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o: In function `worker_load_module':
./binding.cc:227: undefined reference to `v8::Locker::~Locker()'
./binding.cc:262: undefined reference to `v8::String::Utf8Value::~Utf8Value()'
C:\Users\andyrea\AppData\Local\Temp\go-build332228766\b055\_x003.o:C:\Users\andyrea\go\src\github.com\reaandrew\v8worker2/v8/include/v8.h:10061: undefined reference to ...
For security reasons, the Go compiler has a whitelist of arguments that can appear in pkg-config
files, and refuses to use arguments that don't appear on the list. One whitelist entry allows pointing the linker to static libraries directly: it covers files with the extension .a
, but not .lib
.
You can try putting [a-zA-Z0-9_/].*\.lib
in the CGO_LDFLAGS_ALLOW
environment variable to make it pass the check… but I suspect that this would probably not work anyway: .lib
files are produced by MSVC, and they are in a different format from Unix ar
(which is what .a
files are, and probably what the Go compiler expects). The real fix would be get V8 to compile with GCC instead of MSVC and produce a proper .a
file, but V8 doesn't officially support it on Windows, and getting it to work would apparently require a far more invasive patch.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With