原因
缺少GLIBCXX_3.4.15版本,或是更高的版本。
場景描述
在CentOS 6.6 64bit上我將gcc從4.4.7版本升級到4.8.3以便讓其支持c++11標准,然后我安裝node-sass時出現了這個錯誤
解決過程
使用strings命令來查看報錯的動態庫/usr/lib64/libstdc++.so.6中是否含有GLIBCXX_3.4.15?
strings /usr/lib64/libstdc++.so.6|grep GLIBCXX GLIBCXX_3.4 GLIBCXX_3.4.1 GLIBCXX_3.4.2 GLIBCXX_3.4.3 GLIBCXX_3.4.4 GLIBCXX_3.4.5 GLIBCXX_3.4.6 GLIBCXX_3.4.7 GLIBCXX_3.4.8 GLIBCXX_3.4.9 GLIBCXX_3.4.10 GLIBCXX_3.4.11 GLIBCXX_3.4.12 GLIBCXX_3.4.13 GLIBCXX_FORCE_NEW GLIBCXX_DEBUG_MESSAGE_LENGTH
考慮到我剛剛升級gcc,我繼續查找其它目錄下的同名庫
strings /usr/local/lib64/libstdc++.so.6|grep GLIBCXX GLIBCXX_3.4 GLIBCXX_3.4.1 GLIBCXX_3.4.2 GLIBCXX_3.4.3 GLIBCXX_3.4.4 GLIBCXX_3.4.5 GLIBCXX_3.4.6 GLIBCXX_3.4.7 GLIBCXX_3.4.8 GLIBCXX_3.4.9 GLIBCXX_3.4.10 GLIBCXX_3.4.11 GLIBCXX_3.4.12 GLIBCXX_3.4.13 GLIBCXX_3.4.14 GLIBCXX_3.4.15 GLIBCXX_3.4.16 GLIBCXX_3.4.17 GLIBCXX_3.4.18 GLIBCXX_3.4.19 GLIBCXX_FORCE_NEW GLIBCXX_DEBUG_MESSAGE_LENGTH
這里該有的都有了,把這份軟鏈到正確的地方,就妥了。
ls -ls /usr/lib64/libstdc++.so*
ls -ls /usr/local/lib64/libstdc++.so*
cp /usr/local/lib64/libstdc++.so.6.0.19 /usr/lib64/
cd /usr/lib64
rm -f libstdc++.so.6
ln -s libstdc++.so.6.0.19 libstdc++.so.6
ls -l libstdc++*