たむらです。
とりあえず、動くものが出来ましたので報告します。
http://www6.tok2.com/home/tamura/ruby/rbib03-cygbin00.zip

経過と問題点の報告。以降は、ruby-ext でやりましょう。

■Cygwin on Teraterm 問題
普段は、teraterm via ssh で cygwin 環境を利用しているのですが、
ふと cygwinコンソール(cmd.exe)で試すと、動きました。
# ちょっと私の環境が不安定なのかもしれない。Ruby/SDL も require で
落ちるし

■isc_expand_dpb() でエラーになる問題
なかださんから指摘があったように、APIリファレンスガイドに
『Windows 95 およびWindows NT では,引数の個数が固定されている関数
には,常に標準呼び出し規約(_stdcall)を使用します。引数の個数が
可変の関数はisc_start_transaction(),
isc_expand_dpb(),isc_event_block() の3 つだけです。これらにはcdecl 
規約を使用します。』
とありました。いままでの所インポートライブラリの作り方の問題か
BCC以外では動いてません。

■export問題
Borland C++ Compiler 5.5 (BCC)にて、interbase.c をいぢらずに、
interbase.so でシンボルをエクスポートする方法が判らなかったので、
ソースをいぢりました。
# しかし今回DLLの作り方とか、呼び出し規約とか、いろいろ勉強になった。
# なかださん、いつもありがとうございます。
オプションとかで対応できると思われるのですが、vc++でのオプションをどなたか
教えていただけませんか。
((* ruby.h は触らずに、-Dinline指定で大丈夫になりました。*))

■GC 問題
スクリプト内の require 直後に、GC.start しとかないとスクリプト終了時の 
conn_free()内の free()で SEGV ります。
Init_interbase() にアヤシそうな所もないのですが。
[ruby-ext:00349] Re: Ruby/Gtk + Imlib patch
を参考に、Init_interbase()の最後に、rb_gc() を追加してます。

[ruby-ext:00439] Data struct, including VALUE type variable
[ruby-ext:00445] ruby-xlib-0.5 released
辺りを見ると、「VALUE 型を含む構造体を Data Struct として使うべきでない」
とのことですけど、どうしましょう。

--- interbase.c	Fri Jul 13 20:25:52 2001
+++ ../interbase.c	Fri Feb  4 17:12:42 2000
@@ -1540,14 +1540,7 @@
     return rb_iv_get(err, "error_code");
 }
 
-#if defined(__BORLANDC__)
-#ifdef __cplusplus
-extern "C" {
-#endif
-void __declspec(dllexport) __stdcall
-#else
 void
-#endif
 Init_interbase()
 {
     rb_mInterBase = rb_define_module("InterBase");
@@ -1580,6 +1573,4 @@
 
     rb_eIBerror   = rb_define_class_under(rb_mInterBase, "Error", rb_eStandardError);
     rb_define_method(rb_eIBerror, "error_code", iberr_err_code, 0);
-
-    rb_gc();
 }


[make.bcc]
## Makefile for Ruby/InterBase for BCC55 with ruby 1.6.4 (2001-06-04) [i686-cygwin]
##

SHELL = /bin/sh

#### Start of system configuration section. ####
## implib -a cygwin-ruby16.lib cygwin-ruby16.dll
## implib    gds32.lib gds32.dll
##
srcdir = e:\tamura\src\CYGWIN\ruby-1.6.4
topdir = $(srcdir)
hdrdir = $(srcdir)
VPATH  = $(srcdir)

CC = bcc32 -W -w-ifr -w-pro -Dinline
LINK = ilink32

CFLAGS   = -DUSEIMPORTLIB -DWIN32 -D__CYGWIN__
CPPFLAGS = -I$(hdrdir) -I..\include 
CXXFLAGS = $(CFLAGS)
DLDFLAGS = 
LDSHARED = $(LINK) /Tpd $? c0d32.obj

BCC_LIBS  = import32.lib cw32mt.lib

LIBPATH = 

RUBY_INSTALL_NAME = ruby
RUBY_SO_NAME = cygwin-ruby16.lib

#### End of system configuration section. ####

LOCAL_LIBS =  GDS32.lib #$(TARGET).lib
LIBS = $(RUBY_SO_NAME) 
OBJS = interbase.obj

TARGET = interbase
DLLIB = $(TARGET).so

RUBY = ruby
RM = $(RUBY) -r ftools -e 'File::rm_f(*Dir[ARGV.join(" ")])'

EXEEXT = .exe

.SUFFIXES : .obj .c
.SUFFIXES : .res .rc

all:		$(DLLIB)

clean:
		$(RM) *.obj *.so # $(TARGET).def $(TARGET).lib

.c.obj:
	$(CC) $(CFLAGS) $(CPPFLAGS) -c $<

$(DLLIB): $(OBJS) $(LOCAL_LIBS)
	$(LDSHARED) $(DLDFLAGS) ,$(DLLIB), ,$(BCC_LIBS) $(LIBS)# ,$(TARGET).def

[test.rb]
#!/usr/local/bin/ruby

require 'interbase'

#GC.start
conn = InterBase::connect(
 'test.gdb', 'test','test')

conn.execute('SELECT * FROM BAR').each do |r|
  puts r.join('|')
end
conn.commit
conn.close