views:

48

answers:

2

I'm installing Mono 2.6.7 on a Mac 10.4.7, and running across few issues. I've solved some of them by updating few libraries via MacPort, but this one is the latest.

When I start Mono, it crashes. Any help is appreciated.

dyld: lazy symbol binding failed: Symbol not found: _strerror$UNIX2003
  Referenced from: /Library/Frameworks/Mono.framework/Versions/2.6.7/lib/libglib-2.0.0.dylib
  Expected in: /usr/lib/libSystem.B.dylib

dyld: Symbol not found: _strerror$UNIX2003
  Referenced from: /Library/Frameworks/Mono.framework/Versions/2.6.7/lib/libglib-2.0.0.dylib
  Expected in: /usr/lib/libSystem.B.dylib
+1  A: 

OS X's system libraries often contain multiple versions of standard C functions. Starting 10.5, OS X supports the Single Unix Specification. The stderror function as in BSD behaves slightly differently in SUS. So, the library has two versions, _stderror and _stderror$UNIX2003. Which to use is determined at the compile time, as described here, using C preprocessor macros.

I think the Mono binary you're using was compiled in a newer environment. You need to recompile it. If you recompile it on 10.4 machine, it should automatically use the non-UNIX2003 version and it should run fine.

By the way, seriously, update 10.4.7 to 10.4.11.

Yuji
+1 Thanks for the note. As I'm pretty sure on this, just want to check if I can do the recompilation via macports or something - or whether I've to get the Mono svn from repository and do it manually?
amazedsaint
`libSystem` is the very basic shared library and you don't want to mess with it. Re-compiling mono would be safer. What error did you resolve via macports? Did you replace libraries in `/usr/lib/`?
Yuji
A: 

I got this resolved by installing macports, and then doing a

sudo port install mono

Which essentially downloads mono and related dependencies, and compile mono against the local libraries.

amazedsaint