豊福@パパイヤです。

  Ruby Jed を Windows95 の MSVC でコンパイルして
みました。MSVC用の config.h をどうすればよいか
わからなかったので、Linux用の config.h をその
まま使ってエラーが出るたび変更していきました。

  コンパイルオプションは Jed についてくる PC用の
次のものを使いました。
    /nologo /W3 /YX /O2 /D "NDEBUG" /D _X86_ 
    /D "_WINDOWS" /D "__WIN32__" /D "mswindows" 
    /D "msdos" /D "VC32" /D "MSWINDOWS" /D "pc_system"
    /I "." /D "FLOAT_TYPE" /ML 

  ruby のバージョンは 1.0-970701 です。

  以下コンパイルを通すために行なった主な項目です。
間違いやもっとよい方法があったら教えて下さい。

・unistd.h などないファイルに対応する HAVE_UNISTD_H
  などを define しないようにした。
  でも数箇所 #ifdef HAVE_... なしで include
  しているところもあったのでそこはコメントアウト
  した。

・R_OK, W_OK, X_OK がない
  4, 2, 1 に define した。

・S_ISGID, S_IXUGO がない
  linux で定義されている値に define した。

・gid_t がない
  GETGROUPS_T には short を define した。

・DIR がない
  dir.c, glob.c がコンパイルできない。

・fd_set がない
  winsock.h を include した。

・eval.c に struct timeval がない
  sys/time.h もないので代りに winsock.h を
  include した。
  (file.c io.c process.c time.c では自前で
    struct timeval が定義されている。ただし
    file.c では struct が stuct になっている。)

・OpenFile という名前が winbase.h のものとぶつかる
  名前を変えた。

・process.c の struct wail_data 定義の閉括弧の後に
  セミコロンがない

・process.c の f_wait() の中の status = data.status;
  でエラー
  state = data.status; にした。

・SIGHUP, SIGQUIT がない
  コメントアウトした。

などやって取りあえず dir.c と glob.c 以外は .obj
ができました。
  dir.obj と glob.obj 以外をリンクしたときの
未定義関数エラーを最後につけておきます。このうち気に
なっているのは

・ReadDataPending
  READ_DATA_PENDING() 関係

・__WSAFDIsSet@8
  winsock.h の FD_ISSET() 関係

・alloca
  _alloca はあるみたい

・select@20
  winsock.h で PASCAL FAR select(...)

・strcasecmp
  標準関数なんですか?

です。
  これら以外の関数はどのライブラリをリンクすれば
よいでしょうか。


未定義関数一覧

	ReadDataPending
	S_ISBLK
	S_ISFIFO
	__WSAFDIsSet@8
	_wait
	alloca
	chown
	crypt
	fchmod
	fchown
	fcntl
	flock
	fork
	ftruncate
	getegid
	geteuid
	getgid
	getgroups
	getpgrp
	getppid
	gettimeofday
	getuid
	ioctl
	kill
	link
	lstat
	pipe
	random
	readlink
	select@20
	setegid
	setenv
	seteuid
	setpgrp
	setregid
	setreuid
	sigblock
	sigmask
	sigsetmask
	sleep
	strcasecmp
	symlink
	syscall
	truncate
	utimes
	vfork
	wait
---
			豊福@パパイヤ
			unbound / papaya.juice.or.jp
			toyofuku / juice.or.jp