大津です。
ちょうど手元に CentOS5.5 gcc 4.1.2 の環境もあったので node-v0.6.11 で試したんですがエラーにならなかったですねぇ。
> ちなみにソースのuv_dlopen()まわりも調べました。
> handle = dlopen(filename, RTLD_LAZY)のhandleがnullっているのですが
> filenameをprintfで出力させても値は入っているので、何故?という感じです。
ファイル存在の有無によるエラー出力ではないと思います。
node の方では、 dlopen(3)
に失敗したら(UV_OKじゃなければ)、読み込まれなかった理由はどうであれ以下の部分で無条件に”Unable to load shared
library ”というエラーメッセージを出しているだけなんです。
src/node.cc
1556 err = uv_dlopen(*filename, &lib);
1557 if (err.code != UV_OK) {
1558 Local<Value> exception = Exception::Error(
1559 String::Concat(String::New("Unable to load shared library "),
1560 args[0]->ToString()));
1561 return ThrowException(exception);
1562 }
実際のエラーのメッセージは dlerror() を実行した返り値に入っているので、コードに追加してその返り値を見るとエラー発生理由の手がかりがわかります。