Tuesday, September 12, 2006

GLib Universal Binary Framework

OK - so in the spirit of "If you can't find it, build it yourself", I finally got around to setting up a universal binary build of glib. It builds into a mac os framework.

Just download the file http://www.toonetown.com/projects/downloads/GLibFramework-2.12.3.zip, as well as version 2.12.3 of glib from gtk.org. Unzip the framework file and you will have a "macos" folder. Place that folder at the top level of the untarred glib sources and open up the file macos/GLibFramework/GLibFramework.xcodeproj in xcode and build!

This is the first step to my ultimate goal of getting WireShark to compile natively - as a universal binary. :)

3 comments:

schpatz said...

Nice work! You should toss a read me in there for install and submit it to the gtk guys, or at least to these guys

Ryan H said...
This post has been removed by the author.
Ryan H said...

I just built the Framework per your instructions and when I try to link to it in my project I get "ld: can't locate framework for: -framework GLib".

I examined one of the packaged libraries with otool (otool -L libgmodule-2.0.dylib) and got:

/usr/local/lib/libgmodule-2.0.dylib (compatibility version 2.0.0, current version 2.0.0)
/usr/local/lib/libglib-2.0.dylib (compatibility version 2.0.0, current version 2.0.0)
/usr/lib/libiconv.2.dylib (compatibility version 5.0.0, current version 5.0.0)
/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 88.3.3)

What this tells me is that when the linker tries to link to that dylib, it'll search for it in /usr/local/lib. Incidentally, I do NOT have that dylib installed there. It seems that the only way to overcome this situation is changing those paths using @executable_path or @loadable_path, the latter one only being valid on OS X 10.4 and up.