Any plans for the native 64-bit Linux version?
Re: Any plans for the native 64-bit Linux version?
Myth is not open source.
-
- Posts: 27
- Joined: Mon Jan 16, 2012 3:54 pm
Re: Any plans for the native 64-bit Linux version?
In that case is there a way you could provide fully dynamically linked executable as the only thing I could not test with LD_PRELOAD hack is libSDL, yet forcefully preloading any of the other linked libraries did not make any difference (e.g. preloading ones that shipped with Aquaria game and that are also being used by Myth). That fact combined with the developments with Aquaria seems to me all point to this being the source of the problem.
Re: Any plans for the native 64-bit Linux version?
We statically link SDL to reduce the number of dependencies on system libraries - since different distros ship with different sets of packages and such by default. We are already using SDL 1.2.14.
I really don't see how the linking of SDL could be affecting this - it has nothing to do with how we use OpenGL. It must be something else - perhaps how we link to libGLU?
I think the best course of action is to narrow down the difference between the two Aquaria builds? i.e. can the Aquaria developer really produce both a bad build and a good build by changing one specific thing?
I really don't see how the linking of SDL could be affecting this - it has nothing to do with how we use OpenGL. It must be something else - perhaps how we link to libGLU?
I think the best course of action is to narrow down the difference between the two Aquaria builds? i.e. can the Aquaria developer really produce both a bad build and a good build by changing one specific thing?
-
- Posts: 27
- Joined: Mon Jan 16, 2012 3:54 pm
Re: Any plans for the native 64-bit Linux version?
Many thanks for your reply but I cannot really expect the Aquaria contributor to use their time to troubleshoot a Myth 2 problem beyond what I've already mentioned, particularly considering they were willing to fix in their own app. Namely, I tried LD_PRELOADing every single library provided with Aquaria that overlaps with Myth2 and none of them had any effect on the issue (including loading them all). The only difference the Aquaria contributor (as it turns out he's not even the core dev but the executable's source is readily available on icculus.org) did was recompile Aquaria with a newer version of SDL (the same version you mentioned) and applied a few patches, none of which had anything to do with GL/GLU stuff but rather gameplay issues. It's all described in great detail in our correspondence I linked to earlier in this thread. Even though SDL might be the same version it may have been compiled with different flags or there might be some kind of a quirk of having it compiled on a specific architecture and SDL could be very well responsible for textures since the same textures can be used in non-accelerated mode which I presume falls back on SDL (of course without being able to see the code this is a mere speculation that is probably not worth the time it takes to read it . SDL is also the only common thing between the two since Aquaria does not link directly to libGL or libGLU but rather that is done through SDL dependency and as such that part is not comparable. So, until we can prove it otherwise everything points to the SDL being the culprit.
Also, I still don't know what arch you used to compile Myth for Linux which would also help possibly identify similarities between the two issues. Also, if you are not willing to consider using dynamic linking against SDL is there a way you could simply recompile executable with a Ubuntu Oneiric version of libSDL.a to see if that fixes it? That would take a lot less time than for me to fish in the dark with incomplete information or the time it took to get this far...
Many thanks for your consideration!
Also, I still don't know what arch you used to compile Myth for Linux which would also help possibly identify similarities between the two issues. Also, if you are not willing to consider using dynamic linking against SDL is there a way you could simply recompile executable with a Ubuntu Oneiric version of libSDL.a to see if that fixes it? That would take a lot less time than for me to fish in the dark with incomplete information or the time it took to get this far...
Many thanks for your consideration!
Re: Any plans for the native 64-bit Linux version?
We compile Myth II Linux builds on Ubuntu 10.10, which has this for 'uname -a':
We link against the attached libSDLa, which was produced via the following steps on the above system:
If you give me a libSDL.a to try, I will make you a build that links to that version - but I would be very much surprised if it has any effect on your problem. I don't think this would be a good use of my time, but I'll do it if it makes you happy.
Some more details on our build:
We build with the following GCC version:
We use optimization settings -03 -fno-strict-aliasing -rdynamic. We link to libSDL.a (attached) and -lGLU.
Code: Select all
Linux ubuntubox 2.6.35-28-generic #50-Ubuntu SMP Fri Mar 18 19:00:26 UTC 2011 i686 GNU/Linux
Code: Select all
unzip SDL-1.2.14.zip
cd SDL-1.2.14
./configure --disable-audio
make
cp build/.libs/libSDL.a ..
Some more details on our build:
We build with the following GCC version:
Code: Select all
gcc (Ubuntu/Linaro 4.4.4-14ubuntu5) 4.4.5
Copyright (C) 2010 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.
- Attachments
-
- libSDL.a.zip
- (1.1 MiB) Downloaded 325 times
Re: Any plans for the native 64-bit Linux version?
And just for completeness, here's the source package of SDL that we use. It's basically the same source zip you get if you go to download it from libsdl.org.
- Attachments
-
- SDL-1.2.14.zip
- (4.71 MiB) Downloaded 324 times
-
- Posts: 27
- Joined: Mon Jan 16, 2012 3:54 pm
Re: Any plans for the native 64-bit Linux version?
Many thanks for the info! Really appreciate all your help. Here's what I could dig up on my end. First, attached is the Oneiric 32-bit version of libSDL.a (in case you wish to give it a stab).
Oneiric SDL library has been compiled with following flags (according to pkgconfig)
# sdl pkg-config source file
prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
Name: sdl
Description: Simple DirectMedia Layer is a cross-platform multimedia library designed to provide low level access to audio, keyboard, mouse, joystick, 3D hardware via OpenGL, and 2D video framebuffer.
Version: 1.2.14
Requires:
Conflicts:
Libs: -L${libdir} -lSDL
Libs.private: -lSDL -lpthread -lm -ldl -lasound -lm -ldl -lpthread -lesd -lpulse-simple -lpulse -laa -L/usr/lib -lcaca -lpthread
Cflags: -I${includedir}/SDL -D_GNU_SOURCE=1 -D_REENTRANT
Now, onto Aquaria. Using all identical libraries, including libSDL (everything is dynamically linked) here's the only difference between the working and non-working builds:
============================================
Aquaria (NON-WORKING):
file ./aquaria
aquaria: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.4.18, not stripped
ldd ./aquaria
linux-gate.so.1 => (0xf77ba000)
libSDL-1.2.so.0 => /opt/Aquaria/./libSDL-1.2.so.0 (0xf7721000)
libopenal.so.1 => /opt/Aquaria/./libopenal.so.1 (0xf76d3000)
libstdc++.so.6 => /opt/Aquaria/./libstdc++.so.6 (0xf75e6000)
libm.so.6 => /lib32/libm.so.6 (0xf7599000)
libgcc_s.so.1 => /opt/Aquaria/./libgcc_s.so.1 (0xf758e000)
libc.so.6 => /lib32/libc.so.6 (0xf7414000)
libdl.so.2 => /lib32/libdl.so.2 (0xf740f000)
libpthread.so.0 => /lib32/libpthread.so.0 (0xf73f4000)
librt.so.1 => /lib32/librt.so.1 (0xf73ea000)
/lib/ld-linux.so.2 (0xf77bb000)
(notice it uses its own libSDL and a couple other libs)
============================================
Aquaria (WORKING):
file ./aquaria32
aquaria32: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, not stripped
ldd ./aquaria32
linux-gate.so.1 => (0xf77d5000)
libSDL-1.2.so.0 => /usr/lib32/libSDL-1.2.so.0 (0xf7716000)
libpthread.so.0 => /lib32/libpthread.so.0 (0xf76fb000)
libopenal.so.1 => /usr/lib32/libopenal.so.1 (0xf7664000)
libstdc++.so.6 => /usr/lib32/libstdc++.so.6 (0xf7579000)
libm.so.6 => /lib32/libm.so.6 (0xf754f000)
libgcc_s.so.1 => /usr/lib32/libgcc_s.so.1 (0xf7531000)
libc.so.6 => /lib32/libc.so.6 (0xf73b7000)
libdl.so.2 => /lib32/libdl.so.2 (0xf73b2000)
libpulse-simple.so.0 => /usr/lib32/libpulse-simple.so.0 (0xf73ac000)
libpulse.so.0 => /usr/lib32/libpulse.so.0 (0xf735e000)
/lib/ld-linux.so.2 (0xf77d6000)
librt.so.1 => /lib32/librt.so.1 (0xf7355000)
libpulsecommon-1.0.so => /usr/lib32/libpulsecommon-1.0.so (0xf72f0000)
libjson.so.0 => /usr/lib32/libjson.so.0 (0xf72e8000)
libdbus-1.so.3 => /lib32/libdbus-1.so.3 (0xf729e000)
libxcb.so.1 => /usr/lib32/libxcb.so.1 (0xf727f000)
libwrap.so.0 => /lib32/libwrap.so.0 (0xf7275000)
libsndfile.so.1 => /usr/lib32/libsndfile.so.1 (0xf7204000)
libasyncns.so.0 => /usr/lib32/libasyncns.so.0 (0xf71fd000)
libXau.so.6 => /usr/lib32/libXau.so.6 (0xf71f8000)
libXdmcp.so.6 => /usr/lib32/libXdmcp.so.6 (0xf71f1000)
libnsl.so.1 => /lib32/libnsl.so.1 (0xf71d8000)
libFLAC.so.8 => /usr/lib32/libFLAC.so.8 (0xf718a000)
libvorbisenc.so.2 => /usr/lib32/libvorbisenc.so.2 (0xf7012000)
libvorbis.so.0 => /usr/lib32/libvorbis.so.0 (0xf6fe6000)
libogg.so.0 => /usr/lib32/libogg.so.0 (0xf6fde000)
libresolv.so.2 => /lib32/libresolv.so.2 (0xf6fc7000)
============================================
Please note how the second (working one) uses all system libs. Both executables are in the same folder sharing all other game files (apart from a few locally linked libs by the non-working version vs. system libs on the working one as stated above).
The curious thing is when I LD_PRELOAD=/opt/Aquaria/libSDL-1.2.so.0 and try to run aquaria32 (working version) I still don't get the artifacts... LD_PRELOADING other libs does not work (since they are core libs).
The only other difference I could note from my correspondence with Aquaria dev was the following post:
http://www.bit-blot.com/forum/index.php ... 3#msg32743
Once again, many thanks for all your help!
EDIT: I am thinking you will probably have a failed binary if you use Oneiric libSDL.a since it has been compiled with a different version of a compiler whereas your system might be using an older version, so that might not work unless you are able to compile it on a genuine Oneiric system... An alternative would be to use flags found in pkgconfig and see if that makes any difference...
Oneiric SDL library has been compiled with following flags (according to pkgconfig)
# sdl pkg-config source file
prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
Name: sdl
Description: Simple DirectMedia Layer is a cross-platform multimedia library designed to provide low level access to audio, keyboard, mouse, joystick, 3D hardware via OpenGL, and 2D video framebuffer.
Version: 1.2.14
Requires:
Conflicts:
Libs: -L${libdir} -lSDL
Libs.private: -lSDL -lpthread -lm -ldl -lasound -lm -ldl -lpthread -lesd -lpulse-simple -lpulse -laa -L/usr/lib -lcaca -lpthread
Cflags: -I${includedir}/SDL -D_GNU_SOURCE=1 -D_REENTRANT
Now, onto Aquaria. Using all identical libraries, including libSDL (everything is dynamically linked) here's the only difference between the working and non-working builds:
============================================
Aquaria (NON-WORKING):
file ./aquaria
aquaria: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.4.18, not stripped
ldd ./aquaria
linux-gate.so.1 => (0xf77ba000)
libSDL-1.2.so.0 => /opt/Aquaria/./libSDL-1.2.so.0 (0xf7721000)
libopenal.so.1 => /opt/Aquaria/./libopenal.so.1 (0xf76d3000)
libstdc++.so.6 => /opt/Aquaria/./libstdc++.so.6 (0xf75e6000)
libm.so.6 => /lib32/libm.so.6 (0xf7599000)
libgcc_s.so.1 => /opt/Aquaria/./libgcc_s.so.1 (0xf758e000)
libc.so.6 => /lib32/libc.so.6 (0xf7414000)
libdl.so.2 => /lib32/libdl.so.2 (0xf740f000)
libpthread.so.0 => /lib32/libpthread.so.0 (0xf73f4000)
librt.so.1 => /lib32/librt.so.1 (0xf73ea000)
/lib/ld-linux.so.2 (0xf77bb000)
(notice it uses its own libSDL and a couple other libs)
============================================
Aquaria (WORKING):
file ./aquaria32
aquaria32: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, not stripped
ldd ./aquaria32
linux-gate.so.1 => (0xf77d5000)
libSDL-1.2.so.0 => /usr/lib32/libSDL-1.2.so.0 (0xf7716000)
libpthread.so.0 => /lib32/libpthread.so.0 (0xf76fb000)
libopenal.so.1 => /usr/lib32/libopenal.so.1 (0xf7664000)
libstdc++.so.6 => /usr/lib32/libstdc++.so.6 (0xf7579000)
libm.so.6 => /lib32/libm.so.6 (0xf754f000)
libgcc_s.so.1 => /usr/lib32/libgcc_s.so.1 (0xf7531000)
libc.so.6 => /lib32/libc.so.6 (0xf73b7000)
libdl.so.2 => /lib32/libdl.so.2 (0xf73b2000)
libpulse-simple.so.0 => /usr/lib32/libpulse-simple.so.0 (0xf73ac000)
libpulse.so.0 => /usr/lib32/libpulse.so.0 (0xf735e000)
/lib/ld-linux.so.2 (0xf77d6000)
librt.so.1 => /lib32/librt.so.1 (0xf7355000)
libpulsecommon-1.0.so => /usr/lib32/libpulsecommon-1.0.so (0xf72f0000)
libjson.so.0 => /usr/lib32/libjson.so.0 (0xf72e8000)
libdbus-1.so.3 => /lib32/libdbus-1.so.3 (0xf729e000)
libxcb.so.1 => /usr/lib32/libxcb.so.1 (0xf727f000)
libwrap.so.0 => /lib32/libwrap.so.0 (0xf7275000)
libsndfile.so.1 => /usr/lib32/libsndfile.so.1 (0xf7204000)
libasyncns.so.0 => /usr/lib32/libasyncns.so.0 (0xf71fd000)
libXau.so.6 => /usr/lib32/libXau.so.6 (0xf71f8000)
libXdmcp.so.6 => /usr/lib32/libXdmcp.so.6 (0xf71f1000)
libnsl.so.1 => /lib32/libnsl.so.1 (0xf71d8000)
libFLAC.so.8 => /usr/lib32/libFLAC.so.8 (0xf718a000)
libvorbisenc.so.2 => /usr/lib32/libvorbisenc.so.2 (0xf7012000)
libvorbis.so.0 => /usr/lib32/libvorbis.so.0 (0xf6fe6000)
libogg.so.0 => /usr/lib32/libogg.so.0 (0xf6fde000)
libresolv.so.2 => /lib32/libresolv.so.2 (0xf6fc7000)
============================================
Please note how the second (working one) uses all system libs. Both executables are in the same folder sharing all other game files (apart from a few locally linked libs by the non-working version vs. system libs on the working one as stated above).
The curious thing is when I LD_PRELOAD=/opt/Aquaria/libSDL-1.2.so.0 and try to run aquaria32 (working version) I still don't get the artifacts... LD_PRELOADING other libs does not work (since they are core libs).
The only other difference I could note from my correspondence with Aquaria dev was the following post:
http://www.bit-blot.com/forum/index.php ... 3#msg32743
Once again, many thanks for all your help!
EDIT: I am thinking you will probably have a failed binary if you use Oneiric libSDL.a since it has been compiled with a different version of a compiler whereas your system might be using an older version, so that might not work unless you are able to compile it on a genuine Oneiric system... An alternative would be to use flags found in pkgconfig and see if that makes any difference...
- Attachments
-
- libSDL.a.zip
- Oneiric 32-bit libSDL.a
- (231.44 KiB) Downloaded 334 times
Re: Any plans for the native 64-bit Linux version?
Unfortunately, linking to that one resulted in missing symbol errors from the linker:
However, here's a version of Myth2 that I've compiled to link dynamically to SDL, which should pick up whatever you have on your system.
Code: Select all
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_CloseAudio':
(.text+0x144): undefined reference to `snd_pcm_drain'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_CloseAudio':
(.text+0x154): undefined reference to `snd_pcm_close'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_PlayAudio':
(.text+0x1c8): undefined reference to `snd_pcm_writei'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_PlayAudio':
(.text+0x205): undefined reference to `snd_pcm_recover'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_PlayAudio':
(.text+0x211): undefined reference to `snd_strerror'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `Audio_Available':
(.text+0x445): undefined reference to `snd_pcm_open'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `Audio_Available':
(.text+0x457): undefined reference to `snd_pcm_close'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_finalize_hardware.isra.5':
(.text+0x489): undefined reference to `snd_pcm_hw_params'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_finalize_hardware.isra.5':
(.text+0x4a1): undefined reference to `snd_pcm_hw_params_get_buffer_size'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_finalize_hardware.isra.5':
(.text+0x501): undefined reference to `snd_pcm_hw_params_get_period_size'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_finalize_hardware.isra.5':
(.text+0x519): undefined reference to `snd_pcm_hw_params_get_periods'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_set_period_size':
(.text+0x57c): undefined reference to `snd_pcm_hw_params_sizeof'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_set_period_size':
(.text+0x589): undefined reference to `snd_pcm_hw_params_sizeof'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_set_period_size':
(.text+0x5b3): undefined reference to `snd_pcm_hw_params_copy'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_set_period_size':
(.text+0x618): undefined reference to `snd_pcm_hw_params_set_period_size_near'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_set_period_size':
(.text+0x64e): undefined reference to `snd_pcm_hw_params_set_periods_near'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_set_buffer_size.constprop.6':
(.text+0x6ac): undefined reference to `snd_pcm_hw_params_sizeof'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_set_buffer_size.constprop.6':
(.text+0x6b9): undefined reference to `snd_pcm_hw_params_sizeof'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_set_buffer_size.constprop.6':
(.text+0x6e3): undefined reference to `snd_pcm_hw_params_copy'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_set_buffer_size.constprop.6':
(.text+0x742): undefined reference to `snd_pcm_hw_params_set_buffer_size_near'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_OpenAudio':
(.text+0x7e0): undefined reference to `snd_pcm_open'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_OpenAudio':
(.text+0x7ed): undefined reference to `snd_pcm_hw_params_sizeof'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_OpenAudio':
(.text+0x804): undefined reference to `snd_pcm_hw_params_sizeof'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_OpenAudio':
(.text+0x832): undefined reference to `snd_pcm_hw_params_any'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_OpenAudio':
(.text+0x859): undefined reference to `snd_pcm_hw_params_set_access'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_OpenAudio':
(.text+0x8ef): undefined reference to `snd_pcm_hw_params_set_channels'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_OpenAudio':
(.text+0x929): undefined reference to `snd_pcm_hw_params_set_rate_near'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_OpenAudio':
(.text+0x958): undefined reference to `snd_pcm_sw_params_sizeof'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_OpenAudio':
(.text+0x965): undefined reference to `snd_pcm_sw_params_sizeof'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_OpenAudio':
(.text+0x994): undefined reference to `snd_pcm_sw_params_current'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_OpenAudio':
(.text+0x9b8): undefined reference to `snd_pcm_sw_params_set_start_threshold'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_OpenAudio':
(.text+0x9d4): undefined reference to `snd_pcm_sw_params'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_OpenAudio':
(.text+0xa35): undefined reference to `snd_pcm_nonblock'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_OpenAudio':
(.text+0xa86): undefined reference to `snd_pcm_hw_params_set_format'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_OpenAudio':
(.text+0xace): undefined reference to `snd_pcm_hw_params_get_channels'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_OpenAudio':
(.text+0xb1b): undefined reference to `snd_strerror'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_OpenAudio':
(.text+0xb6e): undefined reference to `snd_strerror'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_OpenAudio':
(.text+0xb90): undefined reference to `snd_strerror'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_OpenAudio':
(.text+0xbba): undefined reference to `snd_strerror'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_OpenAudio':
(.text+0xc02): undefined reference to `snd_strerror'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o):(.text+0xc2c): more undefined references to `snd_strerror' follow
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_esdaudio.o): In function `ESD_OpenAudio':
(.text+0x3c4): undefined reference to `esd_play_stream'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_esdaudio.o): In function `Audio_Available':
(.text+0x4ab): undefined reference to `esd_open_sound'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_esdaudio.o): In function `Audio_Available':
(.text+0x4b9): undefined reference to `esd_close'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_esdaudio.o): In function `ESD_CloseAudio':
(.text+0x504): undefined reference to `esd_close'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_WaitDone':
(.text+0x146): undefined reference to `pa_stream_drain'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_WaitDone':
(.text+0x154): undefined reference to `pa_operation_get_state'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_WaitDone':
(.text+0x16a): undefined reference to `pa_context_get_state'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_WaitDone':
(.text+0x180): undefined reference to `pa_stream_get_state'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_WaitDone':
(.text+0x1a5): undefined reference to `pa_mainloop_iterate'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_WaitDone':
(.text+0x1b1): undefined reference to `pa_operation_cancel'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_CloseAudio':
(.text+0x205): undefined reference to `pa_stream_disconnect'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_CloseAudio':
(.text+0x216): undefined reference to `pa_stream_unref'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_CloseAudio':
(.text+0x232): undefined reference to `pa_context_disconnect'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_CloseAudio':
(.text+0x243): undefined reference to `pa_context_unref'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_CloseAudio':
(.text+0x25e): undefined reference to `pa_mainloop_free'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_PlayAudio':
(.text+0x2c3): undefined reference to `pa_stream_write'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_WaitAudio':
(.text+0x2f7): undefined reference to `pa_context_get_state'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_WaitAudio':
(.text+0x30d): undefined reference to `pa_stream_get_state'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_WaitAudio':
(.text+0x332): undefined reference to `pa_mainloop_iterate'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_WaitAudio':
(.text+0x347): undefined reference to `pa_stream_writable_size'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_OpenAudio':
(.text+0x482): undefined reference to `pa_channel_map_init_auto'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_OpenAudio':
(.text+0x48d): undefined reference to `pa_mainloop_new'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_OpenAudio':
(.text+0x4a7): undefined reference to `pa_mainloop_get_api'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_OpenAudio':
(.text+0x555): undefined reference to `pa_context_new'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_OpenAudio':
(.text+0x589): undefined reference to `pa_context_connect'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_OpenAudio':
(.text+0x5b4): undefined reference to `pa_mainloop_iterate'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_OpenAudio':
(.text+0x5cd): undefined reference to `pa_context_get_state'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_OpenAudio':
(.text+0x606): undefined reference to `pa_stream_new'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_OpenAudio':
(.text+0x64d): undefined reference to `pa_stream_connect_playback'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_OpenAudio':
(.text+0x67c): undefined reference to `pa_mainloop_iterate'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_OpenAudio':
(.text+0x691): undefined reference to `pa_stream_get_state'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `Audio_Available':
(.text+0x870): undefined reference to `pa_simple_new'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `Audio_Available':
(.text+0x87e): undefined reference to `pa_simple_free'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_WaitDone':
(.text+0x1bf): undefined reference to `pa_operation_unref'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_aavideo.o): In function `AA_VideoQuit':
(.text+0x298): undefined reference to `aa_uninitkbd'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_aavideo.o): In function `AA_VideoQuit':
(.text+0x2a9): undefined reference to `aa_uninitmouse'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_aavideo.o): In function `AA_VideoQuit':
(.text+0x2e9): undefined reference to `aa_close'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_aavideo.o): In function `AA_VideoInit':
(.text+0x55b): undefined reference to `aa_parseoptions'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_aavideo.o): In function `AA_VideoInit':
(.text+0x568): undefined reference to `aa_defparams'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_aavideo.o): In function `AA_VideoInit':
(.text+0x56d): undefined reference to `aa_autoinit'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_aavideo.o): In function `AA_VideoInit':
(.text+0x591): undefined reference to `aa_autoinitkbd'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_aavideo.o): In function `AA_VideoInit':
(.text+0x5b2): undefined reference to `aa_autoinitmouse'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_aavideo.o): In function `AA_VideoInit':
(.text+0x5c5): undefined reference to `aa_getrenderparams'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_aavideo.o): In function `AA_VideoInit':
(.text+0x5ea): undefined reference to `aa_resizehandler'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_aavideo.o): In function `AA_DirectUpdate':
(.text+0x873): undefined reference to `aa_renderpalette'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_aavideo.o): In function `AA_DirectUpdate':
(.text+0x898): undefined reference to `aa_flush'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_aavideo.o): In function `AA_ResizeHandler':
(.text+0x91b): undefined reference to `aa_resize'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_aavideo.o): In function `AA_ResizeHandler':
(.text+0x9c6): undefined reference to `aa_renderpalette'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_aavideo.o): In function `AA_ResizeHandler':
(.text+0x9e2): undefined reference to `aa_flush'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_cacavideo.o): In function `Caca_VideoQuit':
(.text+0x25d): undefined reference to `__caca0_free_bitmap'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_cacavideo.o): In function `Caca_VideoQuit':
(.text+0x26f): undefined reference to `__caca0_end'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_cacavideo.o): In function `Caca_SetVideoMode':
(.text+0x2cc): undefined reference to `__caca0_free_bitmap'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_cacavideo.o): In function `Caca_SetVideoMode':
(.text+0x3c9): undefined reference to `__caca0_create_bitmap'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_cacavideo.o): In function `Caca_DirectUpdate':
(.text+0x455): undefined reference to `__caca0_cv'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_cacavideo.o): In function `Caca_DirectUpdate':
(.text+0x45d): undefined reference to `caca_get_canvas_height'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_cacavideo.o): In function `Caca_DirectUpdate':
(.text+0x464): undefined reference to `__caca0_cv'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_cacavideo.o): In function `Caca_DirectUpdate':
(.text+0x46f): undefined reference to `caca_get_canvas_width'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_cacavideo.o): In function `Caca_DirectUpdate':
(.text+0x497): undefined reference to `__caca0_cv'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_cacavideo.o): In function `Caca_DirectUpdate':
(.text+0x49f): undefined reference to `caca_dither_bitmap'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_cacavideo.o): In function `Caca_DirectUpdate':
(.text+0x4a4): undefined reference to `__caca0_dp'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_cacavideo.o): In function `Caca_DirectUpdate':
(.text+0x4ac): undefined reference to `caca_refresh_display'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_cacavideo.o): In function `Caca_VideoInit':
(.text+0x589): undefined reference to `__caca0_init'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_aaevents.o): In function `AA_PumpEvents':
(.text+0xc8): undefined reference to `aa_getmouse'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_aaevents.o): In function `AA_PumpEvents':
(.text+0x1e6): undefined reference to `aa_getevent'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_cacaevents.o): In function `Caca_PumpEvents':
(.text+0xb7): undefined reference to `__caca0_get_event'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_cacaevents.o): In function `Caca_PumpEvents':
(.text+0x1bc): undefined reference to `__caca0_cv'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_cacaevents.o): In function `Caca_PumpEvents':
(.text+0x1c8): undefined reference to `caca_get_canvas_width'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_cacaevents.o): In function `Caca_PumpEvents':
(.text+0x1e8): undefined reference to `__caca0_cv'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_cacaevents.o): In function `Caca_PumpEvents':
(.text+0x1f0): undefined reference to `caca_get_canvas_height'
collect2: ld returned 1 exit status
- Attachments
-
- Myth2.zip
- (800.11 KiB) Downloaded 315 times
-
- Posts: 27
- Joined: Mon Jan 16, 2012 3:54 pm
Re: Any plans for the native 64-bit Linux version?
Many thanks for doing this! Alas, no luck yet... Still the same problem plus some errors while running the app:
Inconsistency detected by ld.so: dl-close.c: 743: _dl_close: Assertion `map->l_init_called' failed!
Also had to restart the app initially a few times where pulseaudio failed as follows:
AL lib: pulseaudio.c:353: Received context failure!
3rd try worked and haven't had problems of this kind since, but the problem above persists...
At this point I am out of ideas...
Inconsistency detected by ld.so: dl-close.c: 743: _dl_close: Assertion `map->l_init_called' failed!
Also had to restart the app initially a few times where pulseaudio failed as follows:
AL lib: pulseaudio.c:353: Received context failure!
3rd try worked and haven't had problems of this kind since, but the problem above persists...
At this point I am out of ideas...
-
- Posts: 27
- Joined: Mon Jan 16, 2012 3:54 pm
Re: Any plans for the native 64-bit Linux version?
Just to follow-up, I got my hands on the original Aquaria code from which the original deb package with problems was built and tried building both 32-bit and 64-bit versions of that app and none of them (no matter what version I used) exhibited the said problem. So, after 3 more hours poured into this issue, it seems to me potential discrepancies between build environments are the only remaining possible source of the problem.
What speaks in favor of this theory is also the error I encountered above while running your dynamically linked version, although this may also suggest that the Myth2 code may be altering a struct that is otherwise found in an external lib (maybe that is why it is linked statically against SDL in the first place) and hence inconsistency errors when using dynamic libs.
Finally, it seems the only remaining test to be done would be to build the executable on an Oneiric Ubuntu machine and see if the problem persists... My bet would be it wouldn't. So, any hope of you guys shifting your build environment forward to Oneiric (since I noticed you already use Ubuntu anyhow) and building a new version ?
What speaks in favor of this theory is also the error I encountered above while running your dynamically linked version, although this may also suggest that the Myth2 code may be altering a struct that is otherwise found in an external lib (maybe that is why it is linked statically against SDL in the first place) and hence inconsistency errors when using dynamic libs.
Finally, it seems the only remaining test to be done would be to build the executable on an Oneiric Ubuntu machine and see if the problem persists... My bet would be it wouldn't. So, any hope of you guys shifting your build environment forward to Oneiric (since I noticed you already use Ubuntu anyhow) and building a new version ?
Re: Any plans for the native 64-bit Linux version?
I agree that all signs currently point to the difference in build environments. I will see if I can get an Oneiric Ubuntu environment up to make you a test build, though I'm not sure when I'll have enough time to try this. However, it would be good to figure out what exactly about the build environment is causing this issue. Is it the compiler? Is it the versions of GL libraries we're linking against?flabbergastedpickle wrote: Finally, it seems the only remaining test to be done would be to build the executable on an Oneiric Ubuntu machine and see if the problem persists... My bet would be it wouldn't. So, any hope of you guys shifting your build environment forward to Oneiric (since I noticed you already use Ubuntu anyhow) and building a new version ?
Once we can determine this, I would like to try to find a better solution than simply "just build on a different OS version and the problem magically disappears".
Another concern where we have to careful - at least for release builds - is what impact does building on a newer system have on the resulting binary. We've been very careful to not build Myth in such a way that makes the binary depend on only newer versions of GLIBC and other libraries - so that it could still run on older distros.
-
- Posts: 27
- Joined: Mon Jan 16, 2012 3:54 pm
Re: Any plans for the native 64-bit Linux version?
Again, many thanks for your reply. Indeed finding out what might be a problem is of the essence but remains elusive to me even after spending probably 6-8 hours on this issue...
It could be as ridiculous of an issue of Kernel 2.6* vs 3.* or as we already discussed glibc or any of the other libs. I am simply unable to recreate problem that was provided in a build of Aquaria done on a remote machine locally and as such further troubleshooting on my end is simply impossible without the access to such a machine...
Again, many thanks for your help on this one. It would be truly awesome to play without those annoying artifacts again
It could be as ridiculous of an issue of Kernel 2.6* vs 3.* or as we already discussed glibc or any of the other libs. I am simply unable to recreate problem that was provided in a build of Aquaria done on a remote machine locally and as such further troubleshooting on my end is simply impossible without the access to such a machine...
Again, many thanks for your help on this one. It would be truly awesome to play without those annoying artifacts again
Re: Any plans for the native 64-bit Linux version?
Here's a version compiled on Ubuntu 11.10. Let's see if that one makes a difference.
- Attachments
-
- Myth2.zip
- (978.65 KiB) Downloaded 326 times
-
- Posts: 27
- Joined: Mon Jan 16, 2012 3:54 pm
Re: Any plans for the native 64-bit Linux version?
Well this is insane... I just tried Ubuntu 11.10 version you posted and the problem still persists... I guess this is the end of that... Many thanks for all your help! I officially give up... BTW you did use Ubuntu native libSDL.a?
At any rate, once again many thanks for all your help!
At any rate, once again many thanks for all your help!
Re: Any plans for the native 64-bit Linux version?
I did not - I guess one more thing worth to try.flabbergastedpickle wrote:BTW you did use Ubuntu native libSDL.a?