webrtc-native: Error loading custom built library on Linux ("undefined symbol: _ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev")

There’s a change I want to test to the gdnative plugin, so I’m building it myself. FYI, I haven’t made my change yet, I’m just building it unchanged first to make sure I can do it.

I followed the instructions in the README.md (I used the pre-built webrtc binaries from godotengine/webrtc-actions) and successfully built a binary.

However, when I replace the pre-built version I was using previously with the one I built, I get this error when starting my game:

E 0:00:00.309   open_dynamic_library: Can't open dynamic library: /home/dsnopek/games/Retro Tank Party/webrtc/lib/libwebrtc_native.linux.release.64.so. Error: /home/dsnopek/games/Retro Tank Party/webrtc/lib/libwebrtc_native.linux.release.64.so: undefined symbol: _ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev
  <C++ Error>   Condition "!p_library_handle" is true. Returned: ERR_CANT_OPEN
  <C++ Source>  drivers/unix/os_unix.cpp:415 @ open_dynamic_library()

Any ideas?

I built the gdnative plugin with GCC, which is also what I used to build Godot itself.

Thanks in advance!

About this issue

  • Original URL
  • State: closed
  • Created 3 years ago
  • Comments: 18 (9 by maintainers)

Most upvoted comments

I haven’t checked details but note that glib and glibc are two different libraries. The dependency on glibcxx symbols comes from building against a recent glibc, which makes binaries not portable for distros with older glibc.

Do you still have it laying around?

Yes, this is the release that was used: https://github.com/Faless/webrtc-builds/releases/tag/4472-33644-92ba70c