Subject: [ruby-ffi] Re: newbie question ffi on OsX |
From: macarthy |
Date: 3/9/10 8:56 AM |
To: ruby-ffi |
Answering my own question, since I can't recompile the lib as 64bit I
was able to run ruby as 32 bit and ffi works fine, Commands and output
below.
$ lipo -info /usr/local/lib/libmylib.dylib
Non-fat file: /usr/local/lib/libmylib.dylib is architecture: i386
$ lipo -detailed_info /usr/bin/ruby
Fat header in: /usr/bin/ruby
fat_magic 0xcafebabe
nfat_arch 3
architecture x86_64
cputype CPU_TYPE_X86_64
cpusubtype CPU_SUBTYPE_X86_64_ALL
offset 4096
size 14176
align 212 (4096)
architecture i386
cputype CPU_TYPE_I386
cpusubtype CPU_SUBTYPE_I386_ALL
offset 20480
size 14112
align 212 (4096)
architecture ppc7400
cputype CPU_TYPE_POWERPC
cpusubtype CPU_SUBTYPE_POWERPC_7400
offset 36864
size 13904
align 212 (4096)
$ arch -arch i386 /usr/bin/ruby libmylib.rb
Hi all, Can someone explain this error ? Obviously an architecture mismatch of some sort, how does one got about fixing this? Or compile libmylib as a different arch (or as several ? ) /Library/Ruby/Gems/1.8/gems/ffi-0.6.2/lib/ffi/library.rb:61:in `ffi_lib': Could not open library 'libmylib.dylib': dlopen(libmylib.dylib, 9): no suitable image found. Did find: (LoadError) /usr/local/lib/libmylib.dylib: mach-o, but wrong architecture. Could not open library 'libmylib': dlopen(libmylib, 9): image not found from /Library/Ruby/Gems/1.8/gems/ffi-0.6.2/lib/ffi/library.rb: 43:in `map' from /Library/Ruby/Gems/1.8/gems/ffi-0.6.2/lib/ffi/library.rb: 43:in `ffi_lib' from xxx.rb:14 otool gives me this ... otool -h /usr/local/lib/libmylib.dylib /usr/local/lib/libmylib.dylib: Mach header magic cputype cpusubtype caps filetype ncmds sizeofcmds flags 0xfeedface 7 3 0x00 6 20 2404 0x00118085 Thanks