深度学习的模型不是自己做的,我只负责整合到公司web项目。开发用widows,没有报错,发到
CentOS上就GG了。没想到这么坑。
首先报错:
java.lang.UnsatisfiedLinkError: /root/.javacpp/cache/nd4j-native-1.0.0-beta3-linux-x86_64.jar/org/nd4j/nativeblas/linux-x86_64/libjnind4jcpu.so: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /root/.javacpp/cache/nd4j-native-1.0.0-beta3-linux-x86_64.jar/org/nd4j/nativeblas/linux-x86_64/libjnind4jcpu.so)
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824)
at java.lang.Runtime.load0(Runtime.java:809)
at java.lang.System.load(System.java:1086)
at org.bytedeco.javacpp.Loader.loadLibrary(Loader.java:1238)
at org.bytedeco.javacpp.Loader.load(Loader.java:999)
at org.bytedeco.javacpp.Loader.load(Loader.java:891)
at org.nd4j.nativeblas.Nd4jCpu.<clinit>(Nd4jCpu.java:10)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at org.bytedeco.javacpp.Loader.load(Loader.java:950)
at org.bytedeco.javacpp.Loader.load(Loader.java:891)
at org.nd4j.nativeblas.Nd4jCpu$NativeOps.<clinit>(Nd4jCpu.java:1613)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at org.nd4j.nativeblas.NativeOpsHolder.<init>(NativeOpsHolder.java:46)
at org.nd4j.nativeblas.NativeOpsHolder.<clinit>(NativeOpsHolder.java:36)
at org.nd4j.linalg.cpu.nativecpu.ops.NativeOpExecutioner.<init>(NativeOpExecutioner.java:71)
version `GLIBC_2.14' not found ,没有GLIBC_2.14
度娘解决:
http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz
http://ftp.gnu.org/gnu/glibc/glibc-ports-2.14.tar.gz
tar -xvf glibc-2.14.tar.gz
tar -xvf glibc-ports-2.14.tar.gz
mv glibc-ports-2.14 glibc-2.14/ports
mkdir glibc-2.14/build
cd glibc-2.14/build
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
make
make install
本以为好了,结果。。。。。。
又报:version `GLIBCXX_3.4.14' not found
奔溃~~~,度娘一些帖子说下载个libstdc++.so.6.0.14+,替换就行libstdc++.so.6
我开始用libstdc++.so.6.0.17 结果还是不对,最后用libstdc++.so.6.18可以
cp libstdc++.so.6.0.18 /usr/lib64/
rm /usr/lib64/libstdc++.so.6
ln -s /usr/lib64/libstdc++.so.6.0.18 /usr/lib64/libstdc++.so.6
解决~