説明不足。

config.hが標準ヘッダの間にインクルードされるとなぜコンパイルに失敗するか。
もうすこし具体的なことを書くと、こんな感じで再現できます。
$ cat test.c
#include
#include "ruby.h"
#include
int i;

$ xlc -c test.c

stdio.hに入るときに_LARGE_FILESが定義されていないと、off_tがlong、off64_tがlong longになる。そのあとconfig.hによって_LARGE_FILESが定義されるとunistd.hのなかで幾つかの関数の定義があいまいになってしまって怒られました。