npmからscrypt
(https://www.npmjs.com/package/scrypt)をインストールしています。インストールには、node-gyp
ビルドステップが含まれ、ネイティブなnode.js拡張が構築されます。ネイティブのnode.js拡張機能に、(右側の)libstdC++をどこに見つけるかを教えてください。
[[email protected] nodeapp]$ strings /package/host/localhost/gcc-4/lib64/libstdc++.so.6 | grep "GLIBCXX_3\.4\.21"
[[email protected] nodeapp]$
[[email protected] nodeapp]$ strings /package/host/localhost/gcc-5/lib64/libstdc++.so.6 | grep "GLIBCXX_3\.4\.21"
GLIBCXX_3.4.21
[[email protected] nodeapp]$
ながら、私は
export PATH=/package/host/localhost/gcc-5/bin:$PATH
export LD_LIBRARY_PATH=/package/host/localhost/gcc-5/lib64:$LD_LIBRARY_PATH
を持っているので、
node index.js
module.js:568
return process.dlopen(module, path._makeLong(filename));
^
Error: /package/host/localhost/gcc-4/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /home/xxxx/xxxx/node_modules/scrypt/build/Release/scrypt.node)
at Error (native)
at Object.Module._extensions..node (module.js:568:18)
at Module.load (module.js:456:32)
at tryModuleLoad (module.js:415:12)
at Function.Module._load (module.js:407:3)
at Module.require (module.js:466:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (/home/xxxx/xxxx/node_modules/scrypt/index.js:3:20)
at Module._compile (module.js:541:32)
at Object.Module._extensions..js (module.js:550:10)
at Module.load (module.js:456:32)
at tryModuleLoad (module.js:415:12)
at Function.Module._load (module.js:407:3)
at Module.require (module.js:466:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (/home/xxxx/xxxx/node_modules/unfun-cms/lib/utils/password.js:3:16)
それほど驚くべきことではない:私はその後、私のアプリを起動すると、次のエラーで失敗します
in私の.bashrc
、gcc --version
は正しく5.2.0
と表示されていますので、これらの設定は問題ないと思います。
質問は、どうすればlibstdc++.so.6
の正しいパス、つまり/package/host/localhost/gcc-5/lib64/libstdc++.so.6
のパスをscrypt
に伝えますか? (そして、なぜそれも、それが誤解しない?)
EDIT:
これは、CentOSのマシンです。私はnode.jsバージョン6.1.0
、npmバージョン3.8.6
を使用していますが、scrypt
バージョン6.0.3
をインストールしようとしています。これはこの執筆時点での最新バージョンです。
EDIT 2:
私は静的に、node_modules/scrypt/binding.gyp
を編集する4つの指定されたターゲットのそれぞれに
'libraries': ['/package/host/localhost/gcc-5/lib64/libstdc++.so.6'],
を追加し、その後node-gyp rebuild
を実行してライブラリをリンクしてみました。
は、私は、あまりにも、まだ、それは実行時に間違ったパスからライブラリをロードしようとすると、構文的に有効であると思わ
'libraries': ['-L/package/host/localhost/gcc-5/lib64', '-lstdc++'],
、これを変更してみました。