小编Tia*_* Lv的帖子

在tensorflow-gpu>=1.15中使用用户运算符时未定义的符号

大家。我编写了一些用户运算符来扩展tensorflow,并尝试使用CMake将代码编译到不同的共享库以适应不同版本的tensorflow。

它适用于tensorflow-gpu<=1.14,但不适用于1.15和2.0。加载库时出现以下错误。

tensorflow.python.framework.errors_impl.NotFoundError: build/lib/libtensorflow_ctext.so: undefined symbol: _ZN10tensorflow12OpDefBuilder4AttrENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
Run Code Online (Sandbox Code Playgroud)

我尝试了nm build/lib/libtensorflow_ctext.so1.14版本和2.0版本,两个共享库中间都有这个未定义的符号。

U _ZN10tensorflow12OpDefBuilder4AttrENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
Run Code Online (Sandbox Code Playgroud)

看来程序会在链接的 Tensorflow 框架库 libtensorflow_framework.so 中找到这个符号。我在 libtensorflow_framework.so.2 中搜索了类似的符号,并找到了其中几个。

0000000000cacc50 T _ZN10tensorflow12OpDefBuilder10DeprecatedEiSs
0000000000cace00 T _ZN10tensorflow12OpDefBuilder10SetShapeFnESt8functionIFNS_6StatusEPNS_15shape_inference16InferenceContextEEE
0000000000cacb20 T _ZN10tensorflow12OpDefBuilder13ControlOutputESs
0000000000cac980 T _ZN10tensorflow12OpDefBuilder13SetIsStatefulEv
0000000000cac970 T _ZN10tensorflow12OpDefBuilder14SetIsAggregateEv
0000000000cac960 T _ZN10tensorflow12OpDefBuilder16SetIsCommutativeEv
0000000000cac990 T _ZN10tensorflow12OpDefBuilder27SetAllowsUninitializedInputEv
0000000000cacb50 T _ZN10tensorflow12OpDefBuilder3DocESs
0000000000caca90 T _ZN10tensorflow12OpDefBuilder4AttrESs
0000000000cacac0 T _ZN10tensorflow12OpDefBuilder5InputESs
0000000000cacaf0 T _ZN10tensorflow12OpDefBuilder6OutputESs
0000000000cac830 T _ZN10tensorflow12OpDefBuilderC1ESs
0000000000cac830 T _ZN10tensorflow12OpDefBuilderC2ESs
0000000000c702d0 W _ZN10tensorflow12OpDefBuilderD1Ev
0000000000c702d0 W _ZN10tensorflow12OpDefBuilderD2Ev
Run Code Online (Sandbox Code Playgroud)

该符号_ZN10tensorflow12OpDefBuilder4AttrESs看起来非常相似,但最后几个字母有所不同。我真的不知道那些“ES”和“ENSt7”代表什么。

非常感谢有关如何调试它的提示。这是构建我的共享库的命令(由 cmake 生成)

g++ -fPIC   -shared -Wl,-soname,libtensorflow_ctext.so -o lib/libtensorflow_ctext.so src/CMakeFiles/bp_par_2d.dir/bp_par_2d.cc.o src/CMakeFiles/bp_par_2d_sv.dir/bp_par_2d_sv.cc.o src/CMakeFiles/fp_par_2d.dir/fp_par_2d.cc.o …
Run Code Online (Sandbox Code Playgroud)

c++ shared-libraries tensorflow

6
推荐指数
1
解决办法
3084
查看次数

标签 统计

c++ ×1

shared-libraries ×1

tensorflow ×1