I filed a bug about this<https://code.google.com/p/v8/issues/detail?id=3072&sort=-id&colspec=ID%20Type%20Status%20Priority%20Owner%20Summary%20HW%20OS%20Area%20Stars> last week but while I've had success filing reports in the past I feel like this one doesn't really tell the devs what the problem is so I decided to ask for help here because I think the formatting makes my explanation look a little less like error vomit =)
I'm linking against v8 in a personal c++11 project and all was well as of https://codereview.chromium.org/109963003, but sometime between some STL libraries have started making their way into the source and now, while building the static library works, linking against it in XCode 5 yields the following: Undefined symbols for architecture x86_64: > "std::__throw_length_error(char const*)", referenced from: > std::vector<v8::internal::WorkerThread*, > std::allocator<v8::internal::WorkerThread*> > >::_M_insert_aux(__gnu_cxx::__normal_iterator<v8::internal::WorkerThread**, > std::vector<v8::internal::WorkerThread*, > std::allocator<v8::internal::WorkerThread*> > >, v8::internal::WorkerThread* > const&) in libv8_base.x64.a(default-platform.o) > ld: symbol(s) not found for architecture x86_64 > clang: error: linker command failed with exit code 1 (use -v to see > invocation) > > I have xcoding using -std=c++11 and -stdlib=libc++ . Basically somewhere in v8's implementation of workerthread it's using std::Queue and gyp is linking against a different version of the std library than I am. I did an experiment and I tried building libv8 in the following way: export CXX="`which clang++` -std=c++11 -stdlib=libc++" export GYP_DEFINES="clang=1 mac_deployment_target=10.8" make dependencies && make native -j8 OUTDIR=../v8-build mac_deployment_target=10.8 is required because otherwise C++11 was not available before 10.6 and gyp allows you to target 10.5. The build gets to the linking stage and fails in the following way: > LIBTOOL-STATIC > /Users/ixtli/Public/project/cpp/space-junk/v8/../v8-build/native/libv8_nosnapshot.x64.a CXX(target) > /Users/ixtli/Public/project/cpp/space-junk/v8/../v8-build/native/obj.target/mksnapshot.x64/src/mksnapshot.o LINK(target) > /Users/ixtli/Public/project/cpp/space-junk/v8/../v8-build/native/mksnapshot.x64 Undefined symbols for architecture x86_64: "std::__1::__vector_base_common<true>::__throw_length_error() const", > referenced from: void std::__1::vector<v8::internal::WorkerThread*, > std::__1::allocator<v8::internal::WorkerThread*> > >::__push_back_slow_path<v8::internal::WorkerThread*>(v8::internal::WorkerThread*&&) > > > in libv8_base.x64.a(default-platform.o) "void std::__1::__sort<std::__1::__less<unsigned long, unsigned long>&, > unsigned long*>(unsigned long*, unsigned long*, std::__1::__less<unsigned > long, unsigned long>&)", referenced from: v8::internal::StoreBuffer::SortUniq() in libv8_base.x64.a(store-buffer.o) ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see > invocation) make[1]: *** > [/Users/ixtli/Public/project/cpp/space-junk/v8/../v8-build/native/mksnapshot.x64] > > Error 1 make: *** [native] Error 2 My intuition is either something is very wrong on my end, or these recent changes to use std::stort (<algorithm>) and std::queue aren't reflected in the built configuration that gyp generates for OS X. -- -- 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/groups/opt_out.