title: ffi gem unable to build native extension on Cygwin
body: <p>I need to install the latest version of the <a href="http://rubygems.org/gems/ffi" rel="nofollow">ffi</a> (currently 1.9.3) gem on Cygwin version 2.844. I've seen reports from past versions like 1.0.10 failing to build on Windows systems, but there has been a lot of releases since then.</p>
  
  <p>Here is the complete error message:</p>
  
  <pre><code>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=: &amp;&amp; backupdir=".am$$" &amp;&amp; \
  am__cwd=`pwd` &amp;&amp; CDPATH="${ZSH_VERSION+.}:" &amp;&amp; cd /home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi &amp;&amp; \
  rm -rf $backupdir &amp;&amp; mkdir $backupdir &amp;&amp; \
  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) &gt;/dev/null 2&gt;&amp;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 &amp;&amp; \
  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+.}:" &amp;&amp; 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+.}:" &amp;&amp; cd /home/chris/.rubies/ruby-2.1.1/lib/ruby/gems/2.1.0/gems/ffi-1.9.3/ext/ffi_c/libffi &amp;&amp; \
    $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" &amp;&amp; rm -f "libffi.la" &amp;&amp; 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" &amp;&amp; rm -f "libffi_convenience.la" &amp;&amp; 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, &amp;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
  </code></pre>
  
  <p>Anyone know a possible solution to this? I'm using Ruby 2.1.1 on Windows 8.1.</p>