node 在centos 6.5 上 安裝過程中出現/usr/lib64/libstdc++.so.6: version 'GLIBCXX_3.4.19' not found問題的解決
在linux redhat 6.4環境下安裝tensorflow的過程中,利用PIP直接安裝是非常快的。
但是在調用測試的過程中,卻發現報這樣的錯誤。
/usr/lib64/libstdc++.so.6: version 'GLIBCXX_3.4.19' not found
導致總是出現 failed to load the native tensorflow runtime的信息。
根據這個問題,發現肯定是tensorflow的一些內部控件無法編譯,主要原因還是版本太低。
在終端上輸入如下命令: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
到13到頭了,所以報錯啦。
為此,工作主要是兩步:
第一步:升級GCC。
下載了最新的6.2.0版本。
https://ftp.gnu.org/gnu/gcc/gcc-6.2.0/
gcc
安裝文件下載完成后,執行以下命令解壓文件:
tar -xf gcc-6.2.0.tar.bz2
解壓完成后,執行以下命令進入工作目錄:
cd gcc-6.2.0
執行download_prerequisites
腳本,下載gcc
依賴文件和庫:
./contrib/download_prerequisites
download_prerequisites
腳本,會下載安裝gcc
所需的mpfr
、gmp
和mpc
文件。
建立一個輸出目錄,編譯時所有生成的中間文件都放到該目錄下:
mkdir build
工作目錄切換至輸出目錄,並在其中執行配置和安裝:
cd build
執行configure
配置安裝文件:
../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
配置完成后,執行以下命令,編譯gcc
:
make -j 6
注意:編譯gcc
時間較長,可以多啟用多個核數來執行。
編譯完成后,安裝gcc
:
make install
安裝完成后還需要替換系統默認的gcc
,執行以下命令,查找6.2
版本的安裝文件:
strings /usr/local/lib64/libstdc++.so.6|grep GLIBCXX
這里該有的都有了,把這份軟鏈到正確的地方,就妥了。
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++*
ldconfig