如何将OpenFST链接到tensorflow自定义op?

如何将OpenFST链接到tensorflow自定义op?,tensorflow,openfst,Tensorflow,Openfst,我正在尝试编译一个需要OpenFST()的tensorflow自定义操作。但是,我在运行以下命令时遇到编译错误: 将tensorflow导入为tf decoder_op=tf.load_op_库('./libfst_decoder.so') 并获取未定义的符号错误未定义的符号:_ZN3fst21ConvertToLegalCSymbolEPSs,因此无法找到链接的对象 这是我正在使用的CMake文件: cmake_minimum_required(VERSION 3.5) execute_p

我正在尝试编译一个需要OpenFST()的tensorflow自定义操作。但是,我在运行以下命令时遇到编译错误:

将tensorflow导入为tf
decoder_op=tf.load_op_库('./libfst_decoder.so')
并获取未定义的符号错误
未定义的符号:_ZN3fst21ConvertToLegalCSymbolEPSs
,因此无法找到链接的对象

这是我正在使用的CMake文件:

cmake_minimum_required(VERSION 3.5)

execute_process(COMMAND python3 -c "import tensorflow; print(tensorflow.sysconfig.get_include())" OUTPUT_VARIABLE Tensorflow_INCLUDE_DIRS)

set (CMAKE_CXX_FLAGS "--std=c++11 -fPIC -O2 -D_GLIBCXX_USE_CXX11_ABI=0")

link_directories("/miniconda/envs/py36/lib/python3.6/site-packages/tensorflow")
include_directories(${Tensorflow_INCLUDE_DIRS})
include_directories("/usr/local/include")
add_library(fst_decoder SHARED fst_decoder.cc simple_decoder.cc)
target_link_libraries(fst_decoder -ltensorflow_framework -lfst -ldl -lm)

CMake文件包含外部库是否存在任何明显问题?对编译C++没有太多的经验。

< P>解决方案是重新编译OpenFST:
make CFLAGS='-D\u GLIBCXX\u USE\u cx11\u ABI=0-std=c++11'cxflags='-D\u GLIBCXX\u USE\u cx11\u ABI=0-std=c++11'

由于tensorflow使用D_GLIBCXX_使用_CXX11_ABI=0

请注意,TF提供了一些函数来自动获取这些标志(
tensorflow.sysconfig.get_flags()
或类似的内容)。