我正在從npm安裝scrypt
(https://www.npmjs.com/package/scrypt)。安裝涉及構建本地node.js擴展的node-gyp
構建步驟。當我再開始我的應用程序時,出現以下錯誤:如何告訴本地node.js擴展名在哪裏可以找到(右)libstdC++?
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)
這並不奇怪,因爲
[[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
在我的.bashrc
和gcc --version
正確顯示5.2.0
,所以我假設這些設置是正常的。
所以問題是,我該如何告訴scrypt
正確的libstdc++.so.6
的路徑,即/package/host/localhost/gcc-5/lib64/libstdc++.so.6
? (爲什麼它甚至弄錯了嗎?)
編輯:
這是一個CentOS的機器。我正在使用node.js版本6.1.0
,npm版本3.8.6
,並且我正在嘗試安裝scrypt
版本6.0.3
,這是撰寫本文時的最新版本。
編輯2:
我試圖靜態編輯node_modules/scrypt/binding.gyp
鏈接庫,添加
'libraries': ['/package/host/localhost/gcc-5/lib64/libstdc++.so.6'],
到四個指定的目標,然後運行node-gyp rebuild
。
我也試過這種改變爲
'libraries': ['-L/package/host/localhost/gcc-5/lib64', '-lstdc++'],
,這似乎是語法上有效的,太但儘管如此,它試圖在運行時錯誤的路徑加載庫。