Tiger MPlayer Compilation Weirdness
Mac OS X’s weird changes to the unix layers on which it builds are usually bearable. Mainly because they don’t get in the way, or create any real problem in everyday use1. However, sometimes it can be a real pain in the ass. Take for example, compiling MPlayer from CVS for the operating system. Now on 10.3, this worked great and was a good way to get a nice fast media player to use from the command-line2. After upgrading my Powerbook to 10.4, I’m suddenly hit with the following error message when compiling
/usr/bin/ld: warning multiple definitions of symbol _put_string libavcodec/libavcodec.a(bitstream.o) definition of _put_string in section (__TEXT,__text) /usr/lib/gcc/powerpc-apple-darwin8/4.0.0/../../../libm.dylib(dnssd_ipc.o) definition of _put_string
Now this is basically down to some weirdness in the way dynamic libraries in 10.4 work, and that ‘ld’ on my system doesn’t really understand how to link them properly. A lot of information I’ve found googling around this problem suggests that the answer is to link through GCC, but that doesn’t seem to be the cause.
As far as I can tell, this is something to do with upgrading OS X from 10.3 to 10.4, and nothing I do or tweak regarding the development environment/tools on my powerbook seems to be able to fix it. I’m basically resigned at this point to finding ~80gb of space around my network drives to reinstall with a fresh copy of 10.4 (not that thats a bad thing, just that it requires effort). I’ll note for the record it also happened on an iBook which was similarly upgraded to 10.4 from 10.3.
Also: Great news regarding VC-1 reaching SMTPE approval. The source code for the sample VC-1 decoder is available as a preview publication on the SMPTE website. This is cool because the VC-1 decoder can decode WMV9 streams. Thanks to this code, it’s finally possible to playback WMV9 streams on systems where hooking the x86 Microsoft .dll for WMV9 is impossible (like, for example PPC Macs). Not that I’ve actually got it working yet, but still.. nice to know it is actually feasible now.