我在使用tf.load_op_library('readmat.so')
时遇到了问题,其中readmat.so
是我的自定义C ++代码。但是我收到了以下错误:
gslin@scse-gpu2:~/my_files/CRNN$ python ctpn_cl_icdar15_ch2_train_v1_7.py
Traceback (most recent call last):
File "ctpn_cl_icdar15_ch2_train_v1_7.py", line 13, in <module>
import ICDAR15_ch2_768x768 as icdar15
File "./datasets/ICDAR15_ch2_768x768.py", line 15, in <module>
readmat = tf.load_op_library('/export/home/gslin/my_files/tensorflow/bazel-bin/tensorflow/core/user_ops/readmat.so')
File "/export/home/gslin/.local/lib/python2.7/site-packages/tensorflow/python/framework/load_library.py", line 64, in load_op_library
None, None, error_msg, error_code)
tensorflow.python.framework.errors_impl.NotFoundError: /export/home/gslin/my_files/tensorflow/bazel-bin/tensorflow/core/user_ops/readmat.so: undefined symbol: inflateInit_
符号inflateInit_
在/usr/include/zlib.h
中定义,包含在readmat.cc中。
PS:此服务器的管理员在1周前进行系统升级后发生错误。我不是root用户。
系统:Ubuntu 14.04 Tensorflow:r1.1
对这个问题有任何想法吗?
答案 0 :(得分:0)
@SHD。我是淄川刘,用另一个账号联系你。我已经在具有相同操作系统和张量流的另一台机器上测试了该程序。我使用ldd
命令检查依赖关系并得到:
tensor_v1@cool-Precision-WorkStation-T7500:~$ ldd ~/tools/tensorflow/tensorflow/bazel-bin/tensorflow/core/user_ops/readmat.so
linux-vdso.so.1 => (0x00007ffeda9b4000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fd1526fb000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fd1523e9000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fd15201f000)
/lib64/ld-linux-x86-64.so.2 (0x000055bb007c5000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fd151e08000)
在我遇到问题的机器上,使用ldd
时得到的结果相同:
gslin@scse-gpu2:~/my_files/tensorflow$ ldd bazel-bin/tensorflow/core/user_ops/readmat.so
linux-vdso.so.1 => (0x00007ffc2769d000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f1fa168e000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f1fa137c000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f1fa0fb6000)
/lib64/ld-linux-x86-64.so.2 (0x000055c72d6af000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f1fa0da0000)
但前者正常工作。