2014-05-06 83 views
2

我需要在Cygwin 2.844版上安装最新版本的ffi(当前为1.9.3)gem。我已经看到像1.0.10这样的过去版本的报告无法在Windows系统上构建,但自那以后发布了很多版本。ffi gem无法在Cygwin上构建原生扩展

下面是完整的错误消息:

DL is deprecated, please use Fiddle 
Building native extensions. This could take a while... 
ERROR: Error installing ffi: 
     ERROR: Failed to build gem native extension. 

    /home/chris/.rubies/ruby-2.1.1/bin/ruby.exe extconf.rb 
checking for ffi.h... no 
checking for ffi.h in /usr/local/include,/usr/include/ffi... no 
checking for rb_thread_blocking_region()... yes 
checking for rb_thread_call_with_gvl()... yes 
checking for rb_thread_call_without_gvl()... yes 
checking for ffi_prep_cif_var()... no 
creating extconf.h 
creating Makefile 

make "DESTDIR=" clean 

make "DESTDIR=" 
Configuring libffi 
make -C "/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi-x86_64-cygwin" 
make[1]: Entering directory '/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/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 /home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/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/bin/ld" "NM=/usr/bin/nm -B" "RANLIB=ranlib" "DESTDIR=" all-recursive 
make[2]: Entering directory '/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi-x86_64-cygwin' 
Making all in include 
make[3]: Entering directory '/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi-x86_64-cygwin/include' 
make[3]: Nothing to be done for 'all'. 
make[3]: Leaving directory '/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi-x86_64-cygwin/include' 
Making all in testsuite 
make[3]: Entering directory '/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi-x86_64-cygwin/testsuite' 
make[3]: Nothing to be done for 'all'. 
make[3]: Leaving directory '/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi-x86_64-cygwin/testsuite' 
Making all in man 
make[3]: Entering directory '/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi-x86_64-cygwin/man' 
make[3]: Nothing to be done for 'all'. 
make[3]: Leaving directory '/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi-x86_64-cygwin/man' 
make[3]: Entering directory '/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi-x86_64-cygwin' 
restore=: && backupdir=".am$$" && \ 
am__cwd=`pwd` && CDPATH="${ZSH_VERSION+.}:" && cd /home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi && \ 
rm -rf $backupdir && mkdir $backupdir && \ 
if (/bin/sh /home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/missing --run makeinfo --version) >/dev/null 2>&1; then \ 
    for f in /home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/doc/libffi.info /home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/doc/libffi.info-[0-9] /home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/doc/libffi.info-[0-9][0-9] /home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/doc/libffi.i[0-9] /home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/doc/libffi.i[0-9][0-9]; do \ 
    if test -f $f; then mv $f $backupdir; restore=mv; else :; fi; \ 
    done; \ 
else :; fi && \ 
cd "$am__cwd"; \ 
if /bin/sh /home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/missing --run makeinfo  -I doc -I /home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/doc \ 
-o /home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/doc/libffi.info /home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/doc/libffi.texi; \ 
then \ 
    rc=0; \ 
    CDPATH="${ZSH_VERSION+.}:" && cd /home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi; \ 
else \ 
    rc=$?; \ 
    CDPATH="${ZSH_VERSION+.}:" && cd /home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi && \ 
    $restore $backupdir/* `echo ".//home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/doc/libffi.info" | sed 's|[^/]*$||'`; \ 
fi; \ 
rm -rf $backupdir; exit $rc 
/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/doc/libffi.texi:341: warning: missing name for @deftp 
/bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi -I. -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/include -Iinclude -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/src -g -Wall -fexceptions -c -o src/debug.lo /home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/src/debug.c 
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi -I. -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/include -Iinclude -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/src -g -Wall -fexceptions -c /home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/src/debug.c -DDLL_EXPORT -DPIC -o src/.libs/debug.o 
/bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi -I. -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/include -Iinclude -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/src -g -Wall -fexceptions -c -o src/prep_cif.lo /home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/src/prep_cif.c 
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi -I. -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/include -Iinclude -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/src -g -Wall -fexceptions -c /home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/src/prep_cif.c -DDLL_EXPORT -DPIC -o src/.libs/prep_cif.o 
/bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi -I. -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/include -Iinclude -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/src -g -Wall -fexceptions -c -o src/types.lo /home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/src/types.c 
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi -I. -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/include -Iinclude -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/src -g -Wall -fexceptions -c /home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/src/types.c -DDLL_EXPORT -DPIC -o src/.libs/types.o 
/bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi -I. -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/include -Iinclude -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/src -g -Wall -fexceptions -c -o src/raw_api.lo /home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/src/raw_api.c 
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi -I. -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/include -Iinclude -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/src -g -Wall -fexceptions -c /home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/src/raw_api.c -DDLL_EXPORT -DPIC -o src/.libs/raw_api.o 
/bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi -I. -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/include -Iinclude -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/src -g -Wall -fexceptions -c -o src/java_raw_api.lo /home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/src/java_raw_api.c 
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi -I. -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/include -Iinclude -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/src -g -Wall -fexceptions -c /home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/src/java_raw_api.c -DDLL_EXPORT -DPIC -o src/.libs/java_raw_api.o 
/bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi -I. -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/include -Iinclude -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/src -g -Wall -fexceptions -c -o src/closures.lo /home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/src/closures.c 
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi -I. -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/include -Iinclude -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/src -g -Wall -fexceptions -c /home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/src/closures.c -DDLL_EXPORT -DPIC -o src/.libs/closures.o 
/bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi -I. -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/include -Iinclude -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/src -g -Wall -fexceptions -c -o src/x86/ffi.lo /home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/src/x86/ffi.c 
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi -I. -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/include -Iinclude -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/src -g -Wall -fexceptions -c /home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/src/x86/ffi.c -DDLL_EXPORT -DPIC -o src/x86/.libs/ffi.o 
/bin/sh ./libtool --mode=compile gcc -DHAVE_CONFIG_H -I. -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi -I. -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/include -Iinclude -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/src -I. -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/include -Iinclude -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/src -c -o src/x86/win64.lo /home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/src/x86/win64.S 
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi -I. -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/include -Iinclude -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/src -I. -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/include -Iinclude -I/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/src -c /home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/src/x86/win64.S -DDLL_EXPORT -DPIC -o src/x86/.libs/win64.o 
/bin/sh ./libtool --tag=CC --mode=link gcc -g -Wall -fexceptions -version-info `grep -v '^#' /home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/libtool-version` -o libffi.la -rpath /usr/local/lib src/debug.lo src/prep_cif.lo src/types.lo src/raw_api.lo src/java_raw_api.lo src/closures.lo  src/x86/ffi.lo src/x86/win64.lo 
libtool: link: warning: undefined symbols not allowed in x86_64-unknown-cygwin shared libraries 
libtool: link: ar cru .libs/libffi.a src/.libs/debug.o src/.libs/prep_cif.o src/.libs/types.o src/.libs/raw_api.o src/.libs/java_raw_api.o src/.libs/closures.o src/x86/.libs/ffi.o src/x86/.libs/win64.o 
libtool: link: ranlib .libs/libffi.a 
libtool: link: (cd ".libs" && rm -f "libffi.la" && ln -s "../libffi.la" "libffi.la") 
/bin/sh ./libtool --tag=CC --mode=link gcc -g -Wall -fexceptions -o libffi_convenience.la src/debug.lo src/prep_cif.lo src/types.lo src/raw_api.lo src/java_raw_api.lo src/closures.lo  src/x86/ffi.lo src/x86/win64.lo 
libtool: link: rm -fr .libs/libffi_convenience.a(D) 
libtool: link: ar cru .libs/libffi_convenience.a src/.libs/debug.o src/.libs/prep_cif.o src/.libs/types.o src/.libs/raw_api.o src/.libs/java_raw_api.o src/.libs/closures.o src/x86/.libs/ffi.o src/x86/.libs/win64.o 
libtool: link: ranlib .libs/libffi_convenience.a 
libtool: link: (cd ".libs" && rm -f "libffi_convenience.la" && ln -s "../libffi_convenience.la" "libffi_convenience.la") 
make[3]: Leaving directory '/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi-x86_64-cygwin' 
make[2]: Leaving directory '/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi-x86_64-cygwin' 
make[1]: Leaving directory '/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi-x86_64-cygwin' 
compiling AbstractMemory.c 
compiling ArrayType.c 
compiling Buffer.c 
compiling Call.c 
compiling ClosurePool.c 
compiling DataConverter.c 
compiling DynamicLibrary.c 
compiling ffi.c 
compiling Function.c 
Function.c: In function ‘callback_invoke’: 
Function.c:479: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:102:14: note: expected ‘void * (*)(void *)’ but argument is of type ‘VALUE (*)(void *)’ 
extern void *rb_thread_call_with_gvl(void *(*func)(void *), void *data1); 
      ^
compiling FunctionInfo.c 
compiling LastError.c 
compiling LongDouble.c 
compiling MappedType.c 
compiling MemoryPointer.c 
compiling MethodHandle.c 
compiling Platform.c 
compiling Pointer.c 
compiling Struct.c 
compiling StructByReference.c 
compiling StructByValue.c 
compiling StructLayout.c 
compiling Thread.c 
compiling Type.c 
compiling Types.c 
compiling Variadic.c 
linking shared-object ffi_c.so 
Call.o: In function `call_blocking_function': 
/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/Call.c:294: undefined reference to `ffi_call' 
/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/Call.c:294:(.text+0xa4): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `ffi_call' 
Call.o: In function `rbffi_CallFunction': 
/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/Call.c:378: undefined reference to `ffi_call' 
/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/Call.c:378:(.text+0xa89): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `ffi_call' 
Variadic.o: In function `variadic_invoke': 
/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/Variadic.c:252: undefined reference to `ffi_call' 
/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/Variadic.c:252:(.text+0x36d): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `ffi_call' 
/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi-x86_64-cygwin/.libs/libffi_convenience.a(prep_cif.o): In function `ffi_prep_cif': 
/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/src/prep_cif.c:162: undefined reference to `ffi_prep_cif_machdep' 
/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/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' 
/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi-x86_64-cygwin/.libs/libffi_convenience.a(prep_cif.o): In function `ffi_prep_closure': 
/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi/src/prep_cif.c:174: undefined reference to `ffi_prep_closure_loc' 
/home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/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 status 
Makefile:232: recipe for target 'ffi_c.so' failed 
make: *** [ffi_c.so] Error 1 

make failed, exit code 2 

Gem files will remain installed in /home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3 for inspection. 
Results logged to /home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/extensions/x86_64-cygwin/2.1.0/ffi-1.9.3/gem_make.out 

任何人都知道一个可能的解决方案呢?我在Windows 8.1上使用Ruby 2.1.1。

回答

5

我使用cygwin安装程序安装了libffi-develruby-pkg-config,然后它为我工作。

请参阅https://github.com/ffi/ffi/issues/317的讨论。

libffi6依赖于libffi-devel,所以您不必显式选择它。 cygwin32-libffi是没有必要的。

相关问题