Linux build fails to load "renderergl[12].so" due to mangled symbol's
cengique opened this issue · comments
cengique commented
Downloaded the Linux x64 release binary zip.
Running it on:
$ uname -a
Linux 3.17.2-gentoo #1 SMP PREEMPT Fri Jan 9 14:28:38 EST 2015 x86_64 Intel(R) Core(TM) i5-2500K CPU @ 3.30GHz GenuineIntel GNU/Linux
Got error:
----- Initializing Renderer ----
Trying to load "renderer_opengl2_x86_64.so" from "."...
Loading "renderer_opengl2_x86_64.so" failed
failed:
"Failed loading ./renderer_opengl2_x86_64.so: ./renderer_opengl2_x86_64.so: undefined symbol: _ZGVbN2vv___pow_finite"
Trying to load "renderer_opengl1_x86_64.so" from "."...
Loading "renderer_opengl1_x86_64.so" failed
failed:
"Failed loading ./renderer_opengl1_x86_64.so: ./renderer_opengl1_x86_64.so: undefined symbol: _ZGVbN2vv___pow_finite"
Failed to load renderer
Here's the output of ldd
:
$ ldd ./tremulous.x86_64
linux-vdso.so.1 (0x00007fff5b7fe000)
libSDL2-2.0.so.0 => /usr/lib64/libSDL2-2.0.so.0 (0x00007f64bd3b6000)
librt.so.1 => /lib64/librt.so.1 (0x00007f64bd1ae000)
libstdc++.so.6 => /usr/lib/gcc/x86_64-pc-linux-gnu/5.3.0/libstdc++.so.6 (0x00007f64bce2a000)
libm.so.6 => /lib64/libm.so.6 (0x00007f64bcb33000)
libmvec.so.1 => /lib64/libmvec.so.1 (0x00007f64bc90f000)
libgcc_s.so.1 => /usr/lib/gcc/x86_64-pc-linux-gnu/5.3.0/libgcc_s.so.1 (0x00007f64bc6f8000)
libc.so.6 => /lib64/libc.so.6 (0x00007f64bc35c000)
libasound.so.2 => /usr/lib64/libasound.so.2 (0x00007f64bc083000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f64bbe7f000)
libpulse.so.0 => /usr/lib64/libpulse.so.0 (0x00007f64bbc2d000)
libX11.so.6 => /usr/lib64/libX11.so.6 (0x00007f64bb8f3000)
libXext.so.6 => /usr/lib64/libXext.so.6 (0x00007f64bb6e1000)
libXcursor.so.1 => /usr/lib64/libXcursor.so.1 (0x00007f64bb4d6000)
libXi.so.6 => /usr/lib64/libXi.so.6 (0x00007f64bb2c6000)
libXrandr.so.2 => /usr/lib64/libXrandr.so.2 (0x00007f64bb0bb000)
libXxf86vm.so.1 => /usr/lib64/libXxf86vm.so.1 (0x00007f64baeb5000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f64bac99000)
/lib64/ld-linux-x86-64.so.2 (0x00007f64bd6b2000)
libpulsecommon-8.0.so => /usr/lib64/pulseaudio/libpulsecommon-8.0.so (0x00007f64baa17000)
libjson-c.so.2 => /usr/lib64/libjson-c.so.2 (0x00007f64ba80c000)
libdbus-1.so.3 => /usr/lib64/libdbus-1.so.3 (0x00007f64ba5c5000)
libxcb.so.1 => /usr/lib64/libxcb.so.1 (0x00007f64ba3a5000)
libXrender.so.1 => /usr/lib64/libXrender.so.1 (0x00007f64ba19b000)
libXfixes.so.3 => /usr/lib64/libXfixes.so.3 (0x00007f64b9f95000)
libX11-xcb.so.1 => /usr/lib64/libX11-xcb.so.1 (0x00007f64b9d93000)
libICE.so.6 => /usr/lib64/libICE.so.6 (0x00007f64b9b76000)
libSM.so.6 => /usr/lib64/libSM.so.6 (0x00007f64b996d000)
libXtst.so.6 => /usr/lib64/libXtst.so.6 (0x00007f64b9767000)
libsystemd.so.0 => /usr/lib64/libsystemd.so.0 (0x00007f64b94d6000)
libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f64b92cb000)
libsndfile.so.1 => /usr/lib64/libsndfile.so.1 (0x00007f64b9054000)
libasyncns.so.0 => /usr/lib64/libasyncns.so.0 (0x00007f64b8e4f000)
libXau.so.6 => /usr/lib64/libXau.so.6 (0x00007f64b8c4b000)
libXdmcp.so.6 => /usr/lib64/libXdmcp.so.6 (0x00007f64b8a45000)
libbsd.so.0 => /usr/lib64/libbsd.so.0 (0x00007f64b882f000)
libuuid.so.1 => /lib64/libuuid.so.1 (0x00007f64b862a000)
libcap.so.2 => /lib64/libcap.so.2 (0x00007f64b8424000)
liblz4.so.1 => /usr/lib64/liblz4.so.1 (0x00007f64b8211000)
libgcrypt.so.20 => /usr/lib64/libgcrypt.so.20 (0x00007f64b7f2f000)
libFLAC.so.8 => /usr/lib64/libFLAC.so.8 (0x00007f64b7cf3000)
libogg.so.0 => /usr/lib64/libogg.so.0 (0x00007f64b7aec000)
libvorbis.so.0 => /usr/lib64/libvorbis.so.0 (0x00007f64b78c0000)
libvorbisenc.so.2 => /usr/lib64/libvorbisenc.so.2 (0x00007f64b760d000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f64b73f6000)
libgpg-error.so.0 => /usr/lib64/libgpg-error.so.0 (0x00007f64b71e2000)
Victor Roemer commented
Looks like the math library pow
function is being C++ name mangled in the automated builds.
The fix is probably going to be linking the binary with -static
(same was previously done for mingw32)
Victor Roemer commented
I think building with USE_RENDERER_DLOPEN=0 would fix this on linux; will update Makefile later.
Victor Roemer commented
This commit is staged in my local "auto update" branch.