Hi Zac, thanks for the quick reply! Here's what I see in library:
$ objdump -T /opt/libv8-6.5/lib/libv8_libplatform.so | grep NewDefault 000000000000a850 g DF .text 000000000000012e Base _ZN2v88platform18NewDefaultPlatformEiNS0_15IdleTaskSupportENS0_21InProcessStackDumpingENSt3__110unique_ptrINS_17TracingControllerENS3_14default_deleteIS5_EEEE and this is the error I get later when get php-v8 compiled and try to load: _ZN2v88platform18NewDefaultPlatformEiNS0_15IdleTaskSupportENS0_21InProcessStackDumpingESt10unique_ptrINS_17TracingControllerESt14default_deleteIS4_EE As you see, they differs and it looks like I missed something, but couldn't grasp what and it looks like this is the cause of /home/vagrant/php-v8/scripts/test_v8/hello_world.cpp:21: undefined reference to `v8::platform::NewDefaultPlatform(int, v8::platform::IdleTaskSupport, v8::platform::InProcessStackDumping, std::unique_ptr<v8::TracingController, std::default_delete<v8::TracingController> >)' error too. Happy New Year! Bogdan On Monday, January 1, 2018 at 6:47:13 AM UTC+2, Zac Hansen wrote: > > If you look at the symbols in your libs is it in there anywhere? > > On Saturday, December 30, 2017 at 10:01:28 AM UTC-8, Bogdan Padalko wrote: >> >> Thanks for quick reply! Unfortunately, it's the same. I ended up with >> hello world example after to trying out to use NewDefaultPlatform with >> php-v8 ( >> https://github.com/pinepain/php-v8/blob/53a562e10c23e5f835b2ccdb20967f9c4aef529e/src/php_v8_a.cc#L34), >> >> which yield me there >> >> /home/vagrant/.phpbrew/php/7.2-debug/bin/php: symbol lookup error: /home/ >> vagrant/php-v8/modules/v8.so: undefined symbol: >> _ZN2v88platform18NewDefaultPlatformEiNS0_15IdleTaskSupportENS0_21InProcessStackDumpingESt10unique_ptrINS_17TracingControllerESt14default_deleteIS4_EE >> >> With CreateDefaultPlatform it works just fine, and there was no other >> changes to sources except of using v8 6.5.116 and using NewDefaultPlatform. >> Bare 6.5.116 with CreateDefaultPlatform works fine. >> >> >> On Saturday, December 30, 2017 at 7:28:25 PM UTC+2, Ben Noordhuis wrote: >>> >>> On Sat, Dec 30, 2017 at 5:54 PM, Bogdan Padalko <zaq17...@gmail.com> >>> wrote: >>> > Hi! >>> > >>> > I'm trying to adapt changes from >>> > >>> https://github.com/v8/v8/commit/ffee558e14e28fc8b1f9a3c10ea3615e0d686c7b >>> to >>> > replace CreateDefaultPlatform with NewDefaultPlatform calls, however, >>> for >>> > some reason I'm getting >>> > >>> > /home/vagrant/php-v8/scripts/test_v8/hello_world.cpp:21: undefined >>> reference >>> > to `v8::platform::NewDefaultPlatform(int, >>> v8::platform::IdleTaskSupport, >>> > v8::platform::InProcessStackDumping, >>> std::unique_ptr<v8::TracingController, >>> > std::default_delete<v8::TracingController> >)' >>> > >>> > error with the following code: >>> > >>> > #include <v8.h> >>> > #include <libplatform/libplatform.h> >>> > >>> > #include <stdlib.h> >>> > #include <string.h> >>> > >>> > using namespace v8; >>> > >>> > void weak_callback(const >>> v8::WeakCallbackInfo<v8::Persistent<v8::String>>& >>> > data) { >>> > printf("Weak callback called\n"); >>> > data.GetParameter()->Reset(); >>> > } >>> > >>> > int main(int argc, char* argv[]) { >>> > // Initialize V8. >>> > v8::V8::InitializeICU(); >>> > // v8::Platform *platform = v8::platform::CreateDefaultPlatform(); >>> > // v8::V8::InitializePlatform(platform); >>> > >>> > std::unique_ptr<v8::Platform> platform = >>> > v8::platform::NewDefaultPlatform(); >>> > v8::V8::InitializePlatform(platform.get()); >>> > >>> > V8::Initialize(); >>> > >>> > v8::Isolate::CreateParams create_params; >>> > create_params.array_buffer_allocator = >>> > v8::ArrayBuffer::Allocator::NewDefaultAllocator(); >>> > >>> > // Create a new Isolate and make it the current one. >>> > Isolate* isolate = v8::Isolate::New(create_params); >>> > >>> > v8::Persistent<v8::String> test; >>> > >>> > { >>> > Isolate::Scope isolate_scope(isolate); >>> > >>> > // Create a stack-allocated handle scope. >>> > HandleScope handle_scope(isolate); >>> > >>> > // Create a new context. >>> > Local<Context> context = Context::New(isolate); >>> > >>> > // Enter the context for compiling and running the hello world >>> script. >>> > Context::Scope context_scope(context); >>> > >>> > >>> > test.Reset(isolate, String::NewFromUtf8(isolate, "Hello' + ', >>> > World!'")); >>> > test.SetWeak(&test, weak_callback, >>> v8::WeakCallbackType::kParameter); >>> > >>> > >>> > // Create a string containing the JavaScript source code. >>> > Local<String> source = String::NewFromUtf8(isolate, "(2+2*2) + ' ' >>> + >>> > 'Hello' + ', World!'"); >>> > >>> > // Compile the source code. >>> > Local<Script> script = Script::Compile(source); >>> > >>> > // Run the script to get the result. >>> > Local<Value> result = script->Run(); >>> > >>> > // Convert the result to an UTF8 string and print it. >>> > String::Utf8Value utf8(isolate, result); >>> > printf("%s\n", *utf8); >>> > } >>> > >>> > isolate->LowMemoryNotification(); >>> > >>> > >>> > // Dispose the isolate and tear down V8. >>> > isolate->Dispose(); >>> > V8::Dispose(); >>> > V8::ShutdownPlatform(); >>> > >>> > return 0; >>> > } >>> > >>> > build script: >>> > >>> > #!/bin/bash >>> > >>> > ROOT=/opt/libv8-6.5 >>> > LIB_DIR=$ROOT/lib/ >>> > >>> > SRC_DIR=$ROOT >>> > INCLUDE_DIR=$ROOT/include >>> > >>> > set -x >>> > >>> > g++ -std=c++14 hello_world.cpp -o hello_world \ >>> > -g \ >>> > -O2 \ >>> > -std=c++11 \ >>> > -I$INCLUDE_DIR \ >>> > -L$LIB_DIR \ >>> > -Wl,-rpath,$LIB_DIR \ >>> > -lv8_libbase \ >>> > -lv8_libplatform \ >>> > -lv8 \ >>> > -lpthread >>> > >>> > I use v8 build with the following params: >>> > >>> > gn gen out.gn/x64.release --args="is_debug=false >>> is_component_build=true >>> > v8_use_external_startup_data=false" >>> > ninja -v d8 -C out.gn/x64.release >>> > >>> > Host is x64 Ubuntu 16.04, libv8 installed from my pinepain/libv8-6.5 >>> PPA >>> > (https://launchpad.net/~pinepain/+archive/ubuntu/libv8-6.5) >>> > >>> > I'd really appreciate if anybody give it a look and provide some >>> suggestions >>> > as after spending two days with this I think I just missing something >>> very >>> > simple and obvious. >>> > >>> > Regards, >>> > Bogdan >>> >>> It sounds like a link order issue. What happens when you put `-o >>> hello_world` last? >>> >> -- -- v8-users mailing list v8-users@googlegroups.com http://groups.google.com/group/v8-users --- You received this message because you are subscribed to the Google Groups "v8-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to v8-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.