[MacRuby-devel] dylib hell

Laurent Sansonetti lsansonetti at apple.com
Wed Sep 15 21:55:58 PDT 2010


On Sep 14, 2010, at 6:44 AM, Steven Parkes wrote:
>> Did you try renaming the sqlite3 macports library name, or toggle the options passed to the linker when creating the library?
> 
> I haven't yet. It was something I thought about, but there are a couple of things about dylibs on OS X that I'm not sure about that might make that moot, In particular, anybody know what happens on OS X if you try to load two dylibs that define the same symbol? Even if I could get both libs to load, I'm not sure how it's going to differentiate the same functions from the two libs. Is it smart enough to remember which symbols came from which libs when the link occured?

Indeed, that would be a problem.  

I believe there is a problem in the way CFNetwork uses sqlite3 here. It seems to prevent any user of Cocoa to use a different version of sqlite3. You should report it to Apple I think: http://bugreporter.apple.com.

> A variant on that is to statically link sqlite into the gem, but I'm still not sure about duplicate symbols ...

That would be an idea. You can make sure the sqlite3 symbols will be stripped from the C extension binary by telling the linker (using for example -exported_symbols_list or -exported_symbols_list), this way they can't collide once the extension is dlopen'ed into the process using CFNetwork.

Laurent


More information about the MacRuby-devel mailing list