Subject: [ruby-ffi] Re: cygwin troubles |
From: Bob Myers |
Date: 10/14/13 9:10 PM |
To: ruby-ffi@googlegroups.com |
Just installed the 64 bit cygwin and was installing ffi with gem and ran into the following problem...gcc -shared -o ffi_c.so AbstractMemory.o ArrayType.o Buffer.o Call.o ClosurePool.o DataConverter.o DynamicLibrary.o ffi.o Function.o FunctionInfo.o LastError.o LongDouble.o MappedType.o MemoryPointer.o MethodHandle.o Platform.o Pointer.o Struct.o StructByReference.o StructByValue.o StructLayout.o Thread.o Type.o Types.o Variadic.o -L. -L/usr/lib -L. -Wl,--export-all-symbols -Wl,--enable-auto-image-base,--enable-auto-import "/usr/lib/ruby/gems/1.9.1/ gems/ffi-1.9.0/ext/ffi_c/ libffi-x86_64-cygwin"/.libs/ libffi_convenience.a -lruby191 -lpthread -lrt -ldl -lcrypt Call.o: In function `call_blocking_function':/usr/lib/ruby/gems/1.9.1/gems/ffi-1.9.0/ext/ffi_c/Call.c: 285: undefined reference to `ffi_call' /usr/lib/ruby/gems/1.9.1/gems/ffi-1.9.0/ext/ffi_c/Call.c: 285:(.text+0x94): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `ffi_call' Call.o: In function `rbffi_CallFunction':/usr/lib/ruby/gems/1.9.1/gems/ffi-1.9.0/ext/ffi_c/Call.c: 369: undefined reference to `ffi_call' /usr/lib/ruby/gems/1.9.1/gems/ffi-1.9.0/ext/ffi_c/Call.c: 369:(.text+0xa29): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `ffi_call' Variadic.o: In function `variadic_invoke':/usr/lib/ruby/gems/1.9.1/gems/ffi-1.9.0/ext/ffi_c/Variadic. c:242: undefined reference to `ffi_call' /usr/lib/ruby/gems/1.9.1/gems/ffi-1.9.0/ext/ffi_c/Variadic. c:242:(.text+0x36d): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `ffi_call' /usr/lib/ruby/gems/1.9.1/gems/ffi-1.9.0/ext/ffi_c/libffi- x86_64-cygwin/.libs/libffi_ convenience.a(prep_cif.o): In function `ffi_prep_cif': /usr/lib/ruby/gems/1.9.1/gems/ffi-1.9.0/ext/ffi_c/libffi/ src/prep_cif.c:162: undefined reference to `ffi_prep_cif_machdep' /usr/lib/ruby/gems/1.9.1/gems/ffi-1.9.0/ext/ffi_c/libffi/ src/prep_cif.c:162:(.text+ 0x272): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `ffi_prep_cif_machdep' /usr/lib/ruby/gems/1.9.1/gems/ffi-1.9.0/ext/ffi_c/libffi- x86_64-cygwin/.libs/libffi_ convenience.a(prep_cif.o): In function `ffi_prep_closure': /usr/lib/ruby/gems/1.9.1/gems/ffi-1.9.0/ext/ffi_c/libffi/ src/prep_cif.c:174: undefined reference to `ffi_prep_closure_loc' /usr/lib/ruby/gems/1.9.1/gems/ffi-1.9.0/ext/ffi_c/libffi/ src/prep_cif.c:174:(.text+ 0x2b7): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `ffi_prep_closure_loc' collect2: error: ld returned 1 exit statusMakefile:214: recipe for target `ffi_c.so' failedmake: *** [ffi_c.so] Error 1I suspect the ffi_call symbol would be defined in "/usr/lib/ruby/gems/1.9.1/gems/ffi-1.9.0/ext/ffi_c/ libffi-x86_64-cygwin"/.libs/ libffi_convenience.a. $ nm /usr/lib/ruby/gems/1.9.1/gems/ffi-1.9.0/ext/ffi_c/libffi- x86_64-cygwin/.libs/libffi_ convenience.a | fgrep ffi_call 00000000000001f4 t .ffi_call_win64_end0000000000000080 T ffi_call_win64Looks like some sort of shim has fallen out. Any suggestions?regards, AndrewFull output:make -C "/usr/lib/ruby/gems/1.9.1/gems/ffi-1.9.0/ext/ffi_c/ libffi-x86_64-cygwin" make[1]: Entering directory `/usr/lib/ruby/gems/1.9.1/gems/ffi-1.9.0/ext/ffi_c/ libffi-x86_64-cygwin' make "AR_FLAGS=" "CC_FOR_BUILD=" "CFLAGS=-Wall -fexceptions" "CXXFLAGS=" "CFLAGS_FOR_BUILD=" "CFLAGS_FOR_TARGET=" "INSTALL=/usr/bin/install -c" "INSTALL_DATA=/usr/bin/install -c -m 644" "INSTALL_PROGRAM=/usr/bin/ install -c" "INSTALL_SCRIPT=/usr/bin/ install -c" "JC1FLAGS=" "LDFLAGS=" "LIBCFLAGS=" "LIBCFLAGS_FOR_TARGET=" "MAKE=make" "MAKEINFO=/bin/sh /usr/lib/ruby/gems/1.9.1/gems/ ffi-1.9.0/ext/ffi_c/libffi/ missing --run makeinfo " "PICFLAG=" "PICFLAG_FOR_TARGET=" "RUNTESTFLAGS=" "SHELL=/bin/sh" "exec_prefix=/usr/local" "infodir=/usr/local/share/ info" "libdir=/usr/local/lib" "mandir=/usr/local/share/man" "prefix=/usr/local" "AR=ar" "AS=as" "CC=gcc" "CXX=g++" "LD=/usr/x86_64-pc-cygwin/ bin/ld.exe" "NM=/usr/bin/nm -B" "RANLIB=ranlib" "DESTDIR=" all-recursive make[2]: Entering directory `/usr/lib/ruby/gems/1.9.1/gems/ffi-1.9.0/ext/ffi_c/ libffi-x86_64-cygwin' Making all in includemake[3]: Entering directory `/usr/lib/ruby/gems/1.9.1/gems/ffi-1.9.0/ext/ffi_c/ libffi-x86_64-cygwin/include' make[3]: Nothing to be done for `all'.make[3]: Leaving directory `/usr/lib/ruby/gems/1.9.1/gems/ffi-1.9.0/ext/ffi_c/ libffi-x86_64-cygwin/include' Making all in testsuitemake[3]: Entering directory `/usr/lib/ruby/gems/1.9.1/gems/ffi-1.9.0/ext/ffi_c/ libffi-x86_64-cygwin/ testsuite' make[3]: Nothing to be done for `all'.make[3]: Leaving directory `/usr/lib/ruby/gems/1.9.1/gems/ffi-1.9.0/ext/ffi_c/ libffi-x86_64-cygwin/ testsuite' Making all in manmake[3]: Entering directory `/usr/lib/ruby/gems/1.9.1/gems/ffi-1.9.0/ext/ffi_c/ libffi-x86_64-cygwin/man' make[3]: Nothing to be done for `all'.make[3]: Leaving directory `/usr/lib/ruby/gems/1.9.1/gems/ffi-1.9.0/ext/ffi_c/ libffi-x86_64-cygwin/man' make[3]: Entering directory `/usr/lib/ruby/gems/1.9.1/gems/ffi-1.9.0/ext/ffi_c/ libffi-x86_64-cygwin' make[3]: Leaving directory `/usr/lib/ruby/gems/1.9.1/gems/ffi-1.9.0/ext/ffi_c/ libffi-x86_64-cygwin' make[2]: Leaving directory `/usr/lib/ruby/gems/1.9.1/gems/ffi-1.9.0/ext/ffi_c/ libffi-x86_64-cygwin' make[1]: Leaving directory `/usr/lib/ruby/gems/1.9.1/gems/ffi-1.9.0/ext/ffi_c/ libffi-x86_64-cygwin' gcc -I. -I/usr/include/ruby-1.9.1/x86_64-cygwin -I/usr/include/ruby-1.9.1/ ruby/backward -I/usr/include/ruby-1.9.1 -I. -I"/usr/lib/ruby/gems/1.9.1/ gems/ffi-1.9.0/ext/ffi_c/ libffi-x86_64-cygwin"/include -DRUBY_EXTCONF_H=\"extconf.h\" -ggdb -O2 -pipe -fno-strict-aliasing -o AbstractMemory.o -c AbstractMemory.c gcc -I. -I/usr/include/ruby-1.9.1/x86_64-cygwin -I/usr/include/ruby-1.9.1/ ruby/backward -I/usr/include/ruby-1.9.1 -I. -I"/usr/lib/ruby/gems/1.9.1/ gems/ffi-1.9.0/ext/ffi_c/ libffi-x86_64-cygwin"/include -DRUBY_EXTCONF_H=\"extconf.h\" -ggdb -O2 -pipe -fno-strict-aliasing -o ArrayType.o -c ArrayType.c gcc -I. -I/usr/include/ruby-1.9.1/x86_64-cygwin -I/usr/include/ruby-1.9.1/ ruby/backward -I/usr/include/ruby-1.9.1 -I. -I"/usr/lib/ruby/gems/1.9.1/ gems/ffi-1.9.0/ext/ffi_c/ libffi-x86_64-cygwin"/include -DRUBY_EXTCONF_H=\"extconf.h\" -ggdb -O2 -pipe -fno-strict-aliasing -o Buffer.o -c Buffer.c gcc -I. -I/usr/include/ruby-1.9.1/x86_64-cygwin -I/usr/include/ruby-1.9.1/ ruby/backward -I/usr/include/ruby-1.9.1 -I. -I"/usr/lib/ruby/gems/1.9.1/ gems/ffi-1.9.0/ext/ffi_c/ libffi-x86_64-cygwin"/include -DRUBY_EXTCONF_H=\"extconf.h\" -ggdb -O2 -pipe -fno-strict-aliasing -o Call.o -c Call.c gcc -I. -I/usr/include/ruby-1.9.1/x86_64-cygwin -I/usr/include/ruby-1.9.1/ ruby/backward -I/usr/include/ruby-1.9.1 -I. -I"/usr/lib/ruby/gems/1.9.1/ gems/ffi-1.9.0/ext/ffi_c/ libffi-x86_64-cygwin"/include -DRUBY_EXTCONF_H=\"extconf.h\" -ggdb -O2 -pipe -fno-strict-aliasing -o ClosurePool.o -c ClosurePool.c gcc -I. -I/usr/include/ruby-1.9.1/x86_64-cygwin -I/usr/include/ruby-1.9.1/ ruby/backward -I/usr/include/ruby-1.9.1 -I. -I"/usr/lib/ruby/gems/1.9.1/ gems/ffi-1.9.0/ext/ffi_c/ libffi-x86_64-cygwin"/include -DRUBY_EXTCONF_H=\"extconf.h\" -ggdb -O2 -pipe -fno-strict-aliasing -o DataConverter.o -c DataConverter.c gcc -I. -I/usr/include/ruby-1.9.1/x86_64-cygwin -I/usr/include/ruby-1.9.1/ ruby/backward -I/usr/include/ruby-1.9.1 -I. -I"/usr/lib/ruby/gems/1.9.1/ gems/ffi-1.9.0/ext/ffi_c/ libffi-x86_64-cygwin"/include -DRUBY_EXTCONF_H=\"extconf.h\" -ggdb -O2 -pipe -fno-strict-aliasing -o DynamicLibrary.o -c DynamicLibrary.c gcc -I. -I/usr/include/ruby-1.9.1/x86_64-cygwin -I/usr/include/ruby-1.9.1/ ruby/backward -I/usr/include/ruby-1.9.1 -I. -I"/usr/lib/ruby/gems/1.9.1/ gems/ffi-1.9.0/ext/ffi_c/ libffi-x86_64-cygwin"/include -DRUBY_EXTCONF_H=\"extconf.h\" -ggdb -O2 -pipe -fno-strict-aliasing -o ffi.o -c ffi.c gcc -I. -I/usr/include/ruby-1.9.1/x86_64-cygwin -I/usr/include/ruby-1.9.1/ ruby/backward -I/usr/include/ruby-1.9.1 -I. -I"/usr/lib/ruby/gems/1.9.1/ gems/ffi-1.9.0/ext/ffi_c/ libffi-x86_64-cygwin"/include -DRUBY_EXTCONF_H=\"extconf.h\" -ggdb -O2 -pipe -fno-strict-aliasing -o Function.o -c Function.c Function.c: In function ‘callback_invoke’:Function.c:470:9: warning: passing argument 1 of ‘rb_thread_call_with_gvl’ from incompatible pointer type [enabled by default]rb_thread_call_with_gvl(callback_with_gvl, &cb); ^Function.c:93:14: note: expected ‘void * (*)(void *)’ but argument is of type ‘VALUE (*)(void *)’extern void *rb_thread_call_with_gvl(void *(*func)(void *), void *data1);^gcc -I. -I/usr/include/ruby-1.9.1/x86_64-cygwin -I/usr/include/ruby-1.9.1/ ruby/backward -I/usr/include/ruby-1.9.1 -I. -I"/usr/lib/ruby/gems/1.9.1/ gems/ffi-1.9.0/ext/ffi_c/ libffi-x86_64-cygwin"/include -DRUBY_EXTCONF_H=\"extconf.h\" -ggdb -O2 -pipe -fno-strict-aliasing -o FunctionInfo.o -c FunctionInfo.c gcc -I. -I/usr/include/ruby-1.9.1/x86_64-cygwin -I/usr/include/ruby-1.9.1/ ruby/backward -I/usr/include/ruby-1.9.1 -I. -I"/usr/lib/ruby/gems/1.9.1/ gems/ffi-1.9.0/ext/ffi_c/ libffi-x86_64-cygwin"/include -DRUBY_EXTCONF_H=\"extconf.h\" -ggdb -O2 -pipe -fno-strict-aliasing -o LastError.o -c LastError.c gcc -I. -I/usr/include/ruby-1.9.1/x86_64-cygwin -I/usr/include/ruby-1.9.1/ ruby/backward -I/usr/include/ruby-1.9.1 -I. -I"/usr/lib/ruby/gems/1.9.1/ gems/ffi-1.9.0/ext/ffi_c/ libffi-x86_64-cygwin"/include -DRUBY_EXTCONF_H=\"extconf.h\" -ggdb -O2 -pipe -fno-strict-aliasing -o LongDouble.o -c LongDouble.c gcc -I. -I/usr/include/ruby-1.9.1/x86_64-cygwin -I/usr/include/ruby-1.9.1/ ruby/backward -I/usr/include/ruby-1.9.1 -I. -I"/usr/lib/ruby/gems/1.9.1/ gems/ffi-1.9.0/ext/ffi_c/ libffi-x86_64-cygwin"/include -DRUBY_EXTCONF_H=\"extconf.h\" -ggdb -O2 -pipe -fno-strict-aliasing -o MappedType.o -c MappedType.c gcc -I. -I/usr/include/ruby-1.9.1/x86_64-cygwin -I/usr/include/ruby-1.9.1/ ruby/backward -I/usr/include/ruby-1.9.1 -I. -I"/usr/lib/ruby/gems/1.9.1/ gems/ffi-1.9.0/ext/ffi_c/ libffi-x86_64-cygwin"/include -DRUBY_EXTCONF_H=\"extconf.h\" -ggdb -O2 -pipe -fno-strict-aliasing -o MemoryPointer.o -c MemoryPointer.c gcc -I. -I/usr/include/ruby-1.9.1/x86_64-cygwin -I/usr/include/ruby-1.9.1/ ruby/backward -I/usr/include/ruby-1.9.1 -I. -I"/usr/lib/ruby/gems/1.9.1/ gems/ffi-1.9.0/ext/ffi_c/ libffi-x86_64-cygwin"/include -DRUBY_EXTCONF_H=\"extconf.h\" -ggdb -O2 -pipe -fno-strict-aliasing -o MethodHandle.o -c MethodHandle.c gcc -I. -I/usr/include/ruby-1.9.1/x86_64-cygwin -I/usr/include/ruby-1.9.1/ ruby/backward -I/usr/include/ruby-1.9.1 -I. -I"/usr/lib/ruby/gems/1.9.1/ gems/ffi-1.9.0/ext/ffi_c/ libffi-x86_64-cygwin"/include -DRUBY_EXTCONF_H=\"extconf.h\" -ggdb -O2 -pipe -fno-strict-aliasing -o Platform.o -c Platform.c gcc -I. -I/usr/include/ruby-1.9.1/x86_64-cygwin -I/usr/include/ruby-1.9.1/ ruby/backward -I/usr/include/ruby-1.9.1 -I. -I"/usr/lib/ruby/gems/1.9.1/ gems/ffi-1.9.0/ext/ffi_c/ libffi-x86_64-cygwin"/include -DRUBY_EXTCONF_H=\"extconf.h\" -ggdb -O2 -pipe -fno-strict-aliasing -o Pointer.o -c Pointer.c gcc -I. -I/usr/include/ruby-1.9.1/x86_64-cygwin -I/usr/include/ruby-1.9.1/ ruby/backward -I/usr/include/ruby-1.9.1 -I. -I"/usr/lib/ruby/gems/1.9.1/ gems/ffi-1.9.0/ext/ffi_c/ libffi-x86_64-cygwin"/include -DRUBY_EXTCONF_H=\"extconf.h\" -ggdb -O2 -pipe -fno-strict-aliasing -o Struct.o -c Struct.c gcc -I. -I/usr/include/ruby-1.9.1/x86_64-cygwin -I/usr/include/ruby-1.9.1/ ruby/backward -I/usr/include/ruby-1.9.1 -I. -I"/usr/lib/ruby/gems/1.9.1/ gems/ffi-1.9.0/ext/ffi_c/ libffi-x86_64-cygwin"/include -DRUBY_EXTCONF_H=\"extconf.h\" -ggdb -O2 -pipe -fno-strict-aliasing -o StructByReference.o -c StructByReference.c gcc -I. -I/usr/include/ruby-1.9.1/x86_64-cygwin -I/usr/include/ruby-1.9.1/ ruby/backward -I/usr/include/ruby-1.9.1 -I. -I"/usr/lib/ruby/gems/1.9.1/ gems/ffi-1.9.0/ext/ffi_c/ libffi-x86_64-cygwin"/include -DRUBY_EXTCONF_H=\"extconf.h\" -ggdb -O2 -pipe -fno-strict-aliasing -o StructByValue.o -c StructByValue.c gcc -I. -I/usr/include/ruby-1.9.1/x86_64-cygwin -I/usr/include/ruby-1.9.1/ ruby/backward -I/usr/include/ruby-1.9.1 -I. -I"/usr/lib/ruby/gems/1.9.1/ gems/ffi-1.9.0/ext/ffi_c/ libffi-x86_64-cygwin"/include -DRUBY_EXTCONF_H=\"extconf.h\" -ggdb -O2 -pipe -fno-strict-aliasing -o StructLayout.o -c StructLayout.c gcc -I. -I/usr/include/ruby-1.9.1/x86_64-cygwin -I/usr/include/ruby-1.9.1/ ruby/backward -I/usr/include/ruby-1.9.1 -I. -I"/usr/lib/ruby/gems/1.9.1/ gems/ffi-1.9.0/ext/ffi_c/ libffi-x86_64-cygwin"/include -DRUBY_EXTCONF_H=\"extconf.h\" -ggdb -O2 -pipe -fno-strict-aliasing -o Thread.o -c Thread.c gcc -I. -I/usr/include/ruby-1.9.1/x86_64-cygwin -I/usr/include/ruby-1.9.1/ ruby/backward -I/usr/include/ruby-1.9.1 -I. -I"/usr/lib/ruby/gems/1.9.1/ gems/ffi-1.9.0/ext/ffi_c/ libffi-x86_64-cygwin"/include -DRUBY_EXTCONF_H=\"extconf.h\" -ggdb -O2 -pipe -fno-strict-aliasing -o Type.o -c Type.c gcc -I. -I/usr/include/ruby-1.9.1/x86_64-cygwin -I/usr/include/ruby-1.9.1/ ruby/backward -I/usr/include/ruby-1.9.1 -I. -I"/usr/lib/ruby/gems/1.9.1/ gems/ffi-1.9.0/ext/ffi_c/ libffi-x86_64-cygwin"/include -DRUBY_EXTCONF_H=\"extconf.h\" -ggdb -O2 -pipe -fno-strict-aliasing -o Types.o -c Types.c gcc -I. -I/usr/include/ruby-1.9.1/x86_64-cygwin -I/usr/include/ruby-1.9.1/ ruby/backward -I/usr/include/ruby-1.9.1 -I. -I"/usr/lib/ruby/gems/1.9.1/ gems/ffi-1.9.0/ext/ffi_c/ libffi-x86_64-cygwin"/include -DRUBY_EXTCONF_H=\"extconf.h\" -ggdb -O2 -pipe -fno-strict-aliasing -o Variadic.o -c Variadic.c rm -f ffi_c.sogcc -shared -o ffi_c.so AbstractMemory.o ArrayType.o Buffer.o Call.o ClosurePool.o DataConverter.o DynamicLibrary.o ffi.o Function.o FunctionInfo.o LastError.o LongDouble.o MappedType.o MemoryPointer.o MethodHandle.o Platform.o Pointer.o Struct.o StructByReference.o StructByValue.o StructLayout.o Thread.o Type.o Types.o Variadic.o -L. -L/usr/lib -L. -Wl,--export-all-symbols -Wl,--enable-auto-image-base,--enable-auto-import "/usr/lib/ruby/gems/1.9.1/ gems/ffi-1.9.0/ext/ffi_c/ libffi-x86_64-cygwin"/.libs/ libffi_convenience.a -lruby191 -lpthread -lrt -ldl -lcrypt Call.o: In function `call_blocking_function':/usr/lib/ruby/gems/1.9.1/gems/ffi-1.9.0/ext/ffi_c/Call.c: 285: undefined reference to `ffi_call' /usr/lib/ruby/gems/1.9.1/gems/ffi-1.9.0/ext/ffi_c/Call.c: 285:(.text+0x94): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `ffi_call' Call.o: In function `rbffi_CallFunction':/usr/lib/ruby/gems/1.9.1/gems/ffi-1.9.0/ext/ffi_c/Call.c: 369: undefined reference to `ffi_call' /usr/lib/ruby/gems/1.9.1/gems/ffi-1.9.0/ext/ffi_c/Call.c: 369:(.text+0xa29): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `ffi_call' Variadic.o: In function `variadic_invoke':/usr/lib/ruby/gems/1.9.1/gems/ffi-1.9.0/ext/ffi_c/Variadic. c:242: undefined reference to `ffi_call' /usr/lib/ruby/gems/1.9.1/gems/ffi-1.9.0/ext/ffi_c/Variadic. c:242:(.text+0x36d): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `ffi_call' /usr/lib/ruby/gems/1.9.1/gems/ffi-1.9.0/ext/ffi_c/libffi- x86_64-cygwin/.libs/libffi_ convenience.a(prep_cif.o): In function `ffi_prep_cif': /usr/lib/ruby/gems/1.9.1/gems/ffi-1.9.0/ext/ffi_c/libffi/ src/prep_cif.c:162: undefined reference to `ffi_prep_cif_machdep' /usr/lib/ruby/gems/1.9.1/gems/ffi-1.9.0/ext/ffi_c/libffi/ src/prep_cif.c:162:(.text+ 0x272): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `ffi_prep_cif_machdep' /usr/lib/ruby/gems/1.9.1/gems/ffi-1.9.0/ext/ffi_c/libffi- x86_64-cygwin/.libs/libffi_ convenience.a(prep_cif.o): In function `ffi_prep_closure': /usr/lib/ruby/gems/1.9.1/gems/ffi-1.9.0/ext/ffi_c/libffi/ src/prep_cif.c:174: undefined reference to `ffi_prep_closure_loc' /usr/lib/ruby/gems/1.9.1/gems/ffi-1.9.0/ext/ffi_c/libffi/ src/prep_cif.c:174:(.text+ 0x2b7): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `ffi_prep_closure_loc' collect2: error: ld returned 1 exit statusMakefile:214: recipe for target `ffi_c.so' failedmake: *** [ffi_c.so] Error 1