今天使用新平台tulip(封装的linux os接口) plat_tulip_x86_64.exe,报错如下:
error while loading shared libraries:lib_dlib_dll.so:cannot open shared object file:No such file or directory
找不到依赖库,然后ldd plat_tulip_x86_64.exe:
lib_dlib_dll.so => not found
找到能运行的机器看下ldd plat_tulip_x86_64.exe,lib_dlib_dll.so对应的依赖路径(该路径为编译plat_tulip_x86_64.exe时,-Wl,rpath 执行的动态库加载路径)。
解决办法:
创建并拷贝cp依赖库到依赖路径目录:/zte/omp/libs目录下,再次运行,依然同样的错。
继续解决办法:
cat /etc/ld.so.conf
发现内容为:include ld.so.conf.d/*.conf
那么 cd ld.so.conf.d
增加omp_plat.conf文件,其内容为:/zte/omp/libs 保存退出
运行 /sbin/ldconfig,但提示/zte/omp/libs路径下动态库xxx.1 XXX.18等等不是符号链接,这是因为前面cp拷贝时动态库的符号软链接会自动丢失,解决办法:
cd /zte/omp/libs
ln -sf xxx.so xxx.1
ln -sf XXX.so XXX.18
再次 运行 /sbin/ldconfig不报错
最后运行plat_tulip_x86_64.exe 问题完美解决。
再次回顾一下:在cp动态库时,应该使用cp -s就不会把软链接信息整丢了。