Right, to confirm: - either use `use_custom_libcxx = true` (which is also the default), then V8 will use its own bundled copy of libc++, so you'll need to configure the rest of your project to either use the exact same libc++ or at least a compatible version. (I don't know how to do that with cmake.) - or use `use_custom_libcxx = false`, then V8 will use your system's default, which is typically libstdc++. That's typically the easiest setup to get working, because you don't need to do anything special for the rest of your project's build configuration.
On Wed, Dec 4, 2024 at 10:55 AM Ben Noordhuis <i...@bnoordhuis.nl> wrote: > On Wed, Dec 4, 2024 at 6:00 AM Grant Upson <grantaup...@gmail.com> wrote: > > > > Hi everyone, > > > > I'm trying to embed V8 into a C++ project currently and keep > encountering issues when linking V8. Currently i'm following the > instructions on https://v8.dev/docs/embed and doing this on Linux. After > building V8 with these parameters > > > > > > gn gen out.gn/library --args='is_debug=false is_component_build=false > v8_enable_i18n_support=false use_custom_libcxx=false is_clang=true > v8_monolithic=true target_cpu="x64" v8_use_external_startup_data=false' > > > > > > and attempting to link to the libv8_monolith.a static library it throws > a bunch of undefined reference errors to the standard library e.g., > > > > ld.lld: error: undefined symbol: std::basic_ios<char, > std::char_traits<char>>::init(std::basic_streambuf<char, > std::char_traits<char>>*) > > >>> referenced by logging.cc > > > > I've setup my default compiler to use clang with the LLVM standard > library and using nm have determined that V8 is being built with clang and > the LLVM std library since it outputs std::__1:: function symbols. > > > > I've also forced libc++ to be used in the cmake project that is trying > to link to the V8 library with cmake commands like so > > > > set(CMAKE_CXX_STANDARD_LIBRARIES "-stdlib=libc++") > > set(CMAKE_C_FLAGS "-stdlib=libc++") > > set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stdlib=libc++ > -lc++abi") > > > > I'm really at a loss at what could be causing this issue because both > the library and my project should be using the same standard library. Any > advice? > > In your other email you didn't have use_custom_libcxx=false set. Did > you do a clean/full rebuild after changing it? > > FWIW, I believe V8 links to libstdc++, not libc++, when > use_custom_libcxx=false. Or at least, it doesn't set -stdlib=... but > uses whatever your linker defaults to. > > -- > -- -- 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. To view this discussion visit https://groups.google.com/d/msgid/v8-users/CAKSzg3T%2BqcAHcOYiB5Q2s2AJBdyqyhBoTx3M2gtbPKdgq-sSyw%40mail.gmail.com.