Subj : OSX Build Issue w/ libjs.so To : netscape.public.mozilla.jseng From : Sajid Raza Date : Thu May 27 2004 06:55 pm Well, my case, may be very specific, its working but I thought it might be worth sharing: Basically, I'm using loading libraries into Apache, SpiderMonkey's libjso.so is one of them. Everything works perfectly on Linux/X86. On Mac OSX, the shared library builds fine, but loading it into Apache generates: libjs.so (not a Mach-O file, bad magic number) From a bit of Googling it seems I need to do two things, the first of which seems dubious: Build all source with -fno-common From OSX libtool man page: "Dynamically linked libraries have two restrictions: No symbol may be defined in more than one object file and no common symbol can be used." Since the OSX libtool's a little different run (static is the default): libtool -dynamic -framework System -o Darwin_DBG.OBJ/libjs.so Darwin_DBG.OBJ/jsapi.o Darwin_DBG.OBJ/jsarena.o Darwin_DBG.OBJ/jsarray.o Darwin_DBG.OBJ/jsatom.o Darwin_DBG.OBJ/jsbool.o Darwin_DBG.OBJ/jscntxt.o Darwin_DBG.OBJ/jsdate.o Darwin_DBG.OBJ/jsdbgapi.o Darwin_DBG.OBJ/jsdhash.o Darwin_DBG.OBJ/jsdtoa.o Darwin_DBG.OBJ/jsemit.o Darwin_DBG.OBJ/jsexn.o Darwin_DBG.OBJ/jsfun.o Darwin_DBG.OBJ/jsgc.o Darwin_DBG.OBJ/jshash.o Darwin_DBG.OBJ/jsinterp.o Darwin_DBG.OBJ/jslock.o Darwin_DBG.OBJ/jslog2.o Darwin_DBG.OBJ/jslong.o Darwin_DBG.OBJ/jsmath.o Darwin_DBG.OBJ/jsnum.o Darwin_DBG.OBJ/jsobj.o Darwin_DBG.OBJ/jsopcode.o Darwin_DBG.OBJ/jsparse.o Darwin_DBG.OBJ/jsprf.o Darwin_DBG.OBJ/jsregexp.o Darwin_DBG.OBJ/jsscan.o Darwin_DBG.OBJ/jsscope.o Darwin_DBG.OBJ/jsscript.o Darwin_DBG.OBJ/jsstr.o Darwin_DBG.OBJ/jsutil.o Darwin_DBG.OBJ/jsxdrapi.o Darwin_DBG.OBJ/prmjtime.o -Lfdlibm/Darwin_DBG.OBJ -lfdm -lgcc The difference being the switch -dynamic, and -lgcc. When I tried manually linking against the libjs.so generated by the original config scripts, I received errors. -S .