Cool! I was too lazy to investigate it, mainly because the libraries I was using are from macports, and I didn't want to recompile it all (rebuilding factor was a lot faster :) )
Thanks for sharing the info. On Wed, Jul 15, 2009 at 4:54 PM, Glenn Tarcea<[email protected]> wrote: > In case anyone else runs into this, below is how to build a library > for MacOSX that can be loaded by both 32-bit and 64-bit versions of > Factor. > > To support both 64bit and 32bit architectures, add the flags "-arch > i386 -arch x86_64". This will create a library that supports both > architectures. For example: > > cc -arch i386 -arch x86_64 -fno-common -c tester.c > cc -arch i386 -arch x86_64 -dynamiclib -install_name tester.dylib -o > tester.dylib tester.o > > Thanks, > > Glenn > > V. Glenn Tarcea > [email protected] > > On Jul 15, 2009, at 6:40 AM, Glenn Tarcea wrote: > >> Thanks Bruno, that is the problem. It turns out that the library >> also needs to be built 64 bit. I verified this by building a small >> utility as 64-bit and tried linking it against a 32-bit library. >> MacOSX doesn't like this. I'll have to rebuild BerkeleyDB for 64 bit. >> >> The dlopen man page implies that 64bit and 32bit libraries can be >> loaded on a 64bit system. I wonder if there is a universal linker >> option that would allow this... >> >> Thanks for the pointer. I'll have to do a bit more exploring. >> >> Thanks, >> >> Glenn >> >> V. Glenn Tarcea >> [email protected] >> >> On Jul 14, 2009, at 10:28 PM, Bruno Deferrari wrote: >> >>> I had the same problem before (on OSX too). The cause was that I was >>> trying to load 32bits libraries running 64bits factor. When I >>> recompiled factor for 32bits the libraries loaded fine. >>> >>> On Tue, Jul 14, 2009 at 10:37 PM, Glenn Tarcea<[email protected]> >>> wrote: >>>> Hi, >>>> >>>> I had some working alien code that I haven't touched in a while. I'm >>>> back at it getting it to compile and trying to test it. >>>> Unfortunately >>>> I can't get Factor to recognize my DLL libraries. Is there something >>>> that has changed with the way the libraries should be built/ >>>> recognized >>>> on MacOSX? >>>> >>>> For example, the following library used to load: >>>> >>>> /usr/local/BerkeleyDB.4.5/lib/libdb-4.5.dylib >>>> >>>> If I run "file" on it I get: >>>> libdb-4.5.dylib: Mach-O dynamically linked shared library i386 >>>> >>>> However, if I do the following: >>>> >>>> "/usr/local/BerkeleyDB.4.5/lib/libdb-4.5.dylib" dlopen dll-valid? >>>> I always get false. >>>> >>>> I tried loading a very simple library that I created myself to test >>>> things. The c code is: >>>> >>>> int myfunc() >>>> { >>>> return 53 ; >>>> } >>>> >>>> >>>> I build it as: >>>> cc -fno-common -c tester.c >>>> cc -dynamiclib -install_name tester.dylib -o tester.dylib tester.o >>>> >>>> My FFI Interface is: >>>> ======== >>>> USING: alien alien.libraries alien.syntax combinators kernel >>>> system ; >>>> >>>> IN: berkeleydb.ffitest >>>> >>>> << "tester" { >>>> { [ os winnt? ] [ "libdb.dll" "stdcall" ] } >>>> { [ os macosx? ] [ "/usr/local/ffitest/tester.dylib" "cdecl" add- >>>> library ] } >>>> { [ os unix? ] [ "libbdb.so" "cdecl" ] } >>>> [ "OS Not supported" throw ] >>>> } cond >> >>>> >>>> LIBRARY: tester >>>> >>>> FUNCTION: int myfunc ( ) ; >>>> ============ >>>> >>>> Factor won't recognize this library either (with dlopen and dll- >>>> valid?). Nor will it execute the myfunc word, instead it always >>>> complains that a symbol or library is missing (which makes sense >>>> since >>>> it doesn't seem to recognize tester.dylib as a valid library). >>>> >>>> If I just link an C program with the library, it will run (program >>>> is >>>> not statically linked). >>>> >>>> Thanks, >>>> >>>> Glenn >>>> >>>> V. Glenn Tarcea >>>> [email protected] >>>> >>>> >>>> ------------------------------------------------------------------------------ >>>> Enter the BlackBerry Developer Challenge >>>> This is your chance to win up to $100,000 in prizes! For a limited >>>> time, >>>> vendors submitting new applications to BlackBerry App World(TM) >>>> will have >>>> the opportunity to enter the BlackBerry Developer Challenge. See >>>> full prize >>>> details at: http://p.sf.net/sfu/Challenge >>>> _______________________________________________ >>>> Factor-talk mailing list >>>> [email protected] >>>> https://lists.sourceforge.net/lists/listinfo/factor-talk >>>> >>> >>> ------------------------------------------------------------------------------ >>> Enter the BlackBerry Developer Challenge >>> This is your chance to win up to $100,000 in prizes! For a limited >>> time, >>> vendors submitting new applications to BlackBerry App World(TM) >>> will have >>> the opportunity to enter the BlackBerry Developer Challenge. See >>> full prize >>> details at: http://p.sf.net/sfu/Challenge >>> _______________________________________________ >>> Factor-talk mailing list >>> [email protected] >>> https://lists.sourceforge.net/lists/listinfo/factor-talk >>> >>> >> > > > ------------------------------------------------------------------------------ > Enter the BlackBerry Developer Challenge > This is your chance to win up to $100,000 in prizes! For a limited time, > vendors submitting new applications to BlackBerry App World(TM) will have > the opportunity to enter the BlackBerry Developer Challenge. See full prize > details at: http://p.sf.net/sfu/Challenge > _______________________________________________ > Factor-talk mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/factor-talk > ------------------------------------------------------------------------------ Enter the BlackBerry Developer Challenge This is your chance to win up to $100,000 in prizes! For a limited time, vendors submitting new applications to BlackBerry App World(TM) will have the opportunity to enter the BlackBerry Developer Challenge. See full prize details at: http://p.sf.net/sfu/Challenge _______________________________________________ Factor-talk mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/factor-talk
