在张量流中加载自定义操作时出现未定义的符号错误
问题描述:
我在使用tf.load_op_library('readmat.so')
时遇到问题,其中readmat.so
是我的自定义C++代码。但我得到了以下错误:在张量流中加载自定义操作时出现未定义的符号错误
[email protected]:~/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 inclued。
PS:此服务器的管理员在1周前进行系统升级后发生错误。我不是root用户。
操作系统:Ubuntu 14.04 Tensorflow:R1.1
有关此问题的任何想法?
答
@SHD。我是Zichuan Liu,用另一个帐户与你联系。我已经在具有相同操作系统和张量流的另一台机器上测试了该程序。我以前ldd
命令检查的依赖,并得到:
[email protected]:~$ 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
时得到了即使是同样的结果:
[email protected]:~/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)
但前者一个正常工作。
我想readmat.so没有链接到libz.so.通过运行'ldd readmat.so'检查依赖关系,并检查是否看到libz.so. – SHR