pkg-config errors on windows compiling v8
Asked Answered
E

1

6

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 ...
Electrotype answered 23/11, 2019 at 5:36 Comment(4)
The new error looks like the library wasn't used/found; maybe the relative path is not correct? Just a guess. -- I would have suggested to ask this at github.com/ry/v8worker2/issues, but it seems that that project is dead.Codify
What are the other parameters when pkg-config --libs is called? Also, since you're on Windows you may need to actually call pkg-config.exe. One way that sometimes helps to force this is setting this in the environment: ``` PKG_CONFIG=$(which pkg-config.exe) ```Joyce
try go build -x -v so we might try figure out ` invalid flag in pkg-config --libs: out/v8build/obj/v8_monolith.lib`Philippine
The -L option informs the linker that libraries can be found in a specified directory, but doesn't tell it to load any specific library. The original script intended to point linker to a specific static library. Adding -L here is counterproductive.Reference
R
1

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.

Reference answered 30/11, 2019 at 6:47 Comment(3)
Not officially supporting it doesn't mean you can't do it.Dou
Technically it doesn't, but good luck trying to figure out how to do it with V8's custom build system, patching half the files in the repository, and then trying to fit the resulting patch inside a StackOverflow answer.Reference
I actually took a look at the build system of V8, and I noticed that in BUILD.gn the is_win variable conflates 'the target platform is Windows' and 'the compiler is MSVC'; it both includes Windows-specific source files in the build and enables MSVC-specific compiler/linker command-line options. Disentangling the two meanings would be quite nontrivial work.Reference

© 2022 - 2024 — McMap. All rights reserved.