Code Monkey home page Code Monkey logo

Comments (18)

Faless avatar Faless commented on June 12, 2024 1

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

from webrtc-native.

akien-mga avatar akien-mga commented on June 12, 2024 1

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.

from webrtc-native.

Faless avatar Faless commented on June 12, 2024

That's weird, I'm using gcc too.

gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Could you also try with clang? Is Godot a stable release or a custom one? (I only tested latest stable with a fresh plugin build)

from webrtc-native.

Faless avatar Faless commented on June 12, 2024

And does the pre-built plugin works?

Well, that was actually manually built with a different WebRTC binary build setup.

from webrtc-native.

dsnopek avatar dsnopek commented on June 12, 2024

Could you also try with clang?

I could try with clang!

Is Godot a stable release or a custom one? (I only tested latest stable with a fresh plugin build)

I'm using Godot 3.3.2 + the change in godotengine/godot#49976

However, I just tried using the official Godot 3.3.2 build and I still get the same error loading my custom build of the plugin.

-And does the pre-built plugin works?-

Even though you crossed it out, yes, the pre-built gdnative plugin works. It's swapping in my custom built on that gives me this error.

Well, that was actually manually built with a different WebRTC binary build setup.

Hm, so not the binary from godotengine/webrtc-actions? Do you still have it laying around? I could try using that and see what happens

from webrtc-native.

Faless avatar Faless commented on June 12, 2024

By cloning the repository you can also get automated builds of the plugin via CI actions.
Since you are a member you should also be able to download this: https://github.com/godotengine/webrtc-native/actions/runs/1019716854 (which is a recent run using the fully automated setup).

from webrtc-native.

dsnopek avatar dsnopek commented on June 12, 2024

Since you are a member you should also be able to download this: https://github.com/godotengine/webrtc-native/actions/runs/1019716854 (which is a recent run using the fully automated setup).

Hm, so I just tried the plugins built on that run and they work fine for me.

So, it's definitely something on my end that's messing up the plugin. I'm not sure what try, beyond just switching to clang and seeing if that works...

from webrtc-native.

Faless avatar Faless commented on June 12, 2024

So, the thing that comes to mind is a mismatch in the libstdc++ version.

You can try applying this small patch:

diff --git a/SConstruct b/SConstruct
index 4fbe324..dd7126b 100644
--- a/SConstruct
+++ b/SConstruct
@@ -120,7 +120,7 @@ if target_platform == "linux":
         env.Append(CCFLAGS=["-m64"])
         env.Append(LINKFLAGS=["-m64"])
         # i386 does not like static libstdc++
-        env.Append(LINKFLAGS=["-static-libgcc", "-static-libstdc++"])
+        #env.Append(LINKFLAGS=["-static-libgcc", "-static-libstdc++"])
 
 elif target_platform == "windows":
     if host_platform == "Windows":

Rebuild, and check if it still fails, then with:
ldd bin/webrtc_debug/lib/libwebrtc_native.linux.debug.64.so

You will get something like:

	linux-vdso.so.1 (0x00007ffee929b000)
	libatomic.so.1 => /usr/lib/x86_64-linux-gnu/libatomic.so.1 (0x00007f173db68000)
>>>	libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f173d986000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f173d837000)
>>>	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f173d81c000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f173d62a000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f173f150000)
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f173d607000)

from webrtc-native.

dsnopek avatar dsnopek commented on June 12, 2024

I just rebuilt Godot, the godot-cpp bindings and the plugin with clang and, unfortunately, I still get the exact same error. I double checked the binaries with objdump and I'm definitely using the clang versions now.

I'll try your patch next!

from webrtc-native.

dsnopek avatar dsnopek commented on June 12, 2024

I tried the patch (using clang, because I didn't want to rebuild everything again), and it still fails. I ran ldd on the plugin and I get basically the same as you above:

$ ldd libwebrtc_native.linux.debug.64.so 
        linux-vdso.so.1 (0x00007ffe217d4000)
        libatomic.so.1 => /usr/lib/x86_64-linux-gnu/libatomic.so.1 (0x00007fabe8e88000)
        libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fabe8aff000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fabe8761000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fabe8549000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fabe8158000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fabea7ed000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fabe7f39000)

from webrtc-native.

dsnopek avatar dsnopek commented on June 12, 2024

I'm trying to rebuild webrtc using the build.sh from https://github.com/Faless/webrtc-builds - I'm expecting that to probably run over night :-)

from webrtc-native.

Faless avatar Faless commented on June 12, 2024

@dsnopek on linux you might need to comment out this step: https://github.com/Faless/webrtc-builds/blob/master/build.sh#L116

from webrtc-native.

dsnopek avatar dsnopek commented on June 12, 2024

Trying to rebuild webrtc leads to this error:

python ../../../build/util/python2_action.py ../../../tools/protoc_wrapper/protoc_wrapper.py config.proto --protoc ./protoc --proto-in-dir ../../../modules/audio_coding/audio_network_adaptor --cc-out-dir gen/modules/audio_coding/audio_network_adaptor --py-out-dir pyproto/modules/audio_coding/audio_network_adaptor
/home/dsnopek/prj/webrtc-builds/godot_linux_4472/src/out/x64/Debug/protoc: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by /home/dsnopek/prj/webrtc-builds/godot_linux_4472/src/out/x64/Debug/protoc)

And if I check in libstdc++.so.6 I can see that GLIBCXX_3.4.26 isn't present:

$ strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_3.4.24
GLIBCXX_3.4.25
GLIBCXX_DEBUG_MESSAGE_LENGTH

I tried using a Docker image of Ubuntu 18.04 (the same as on my host system) to see if my system was somehow messed up, and fully updating the vanilla image still shows libstdc++.so.6 is missing GLIBCXX_3.4.26.

Maybe I should be using some PPA to update libstdc++6 to an even newer version?

from webrtc-native.

Faless avatar Faless commented on June 12, 2024

from webrtc-native.

Faless avatar Faless commented on June 12, 2024

from webrtc-native.

Faless avatar Faless commented on June 12, 2024

from webrtc-native.

dsnopek avatar dsnopek commented on June 12, 2024

If you are using the build script in the webrtc-builds see the release notes for the exact command.

Yes, I was/am using the exact command from the release page.

In any case, I spent yesterday going through the painful process of upgrading to Ubuntu 20.04 (I made my machine unbootable only twice in process! :-)), and after recompiling godot-cpp and the plugin, it now loads fine.

So, it was something with Ubuntu 18.04, but also probably with my system in particular. This machine started out on 16.04 and was upgraded in-place to 18.04, so there's definitely a chance that I had some weirdness going on. (Of course, I just did an in-place upgrade to 20.04, but at least the current weirdness isn't breaking this build.)

Thanks for all the help!!

I've also started the build.sh from webrtc-build again - we'll see if that finally works for me on 20.04 too.

from webrtc-native.

dsnopek avatar dsnopek commented on June 12, 2024

I've also started the build.sh from webrtc-build again - we'll see if that finally works for me on 20.04 too.

A quick follow-up on this: I wasn't expecting it to finish so quickly, but this build succeeded too! I copied the result binaries into the plugin source and rebuilt, and the resulting plugin worked. So, it seems upgrading to 20.04 has solved all my building issues. :-)

from webrtc-native.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.