大津です。

ちょうど手元に 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() を実行した返り値に入っているので、コードに追加してその返り値を見るとエラー発生理由の手がかりがわかります。

メールによる返信