fatal error: google/protobuf/port_def.inc: No such file or directory #include <google/protobuf/port_def.inc>

NN_05 picture NN_05 · Jul 3, 2019 · Viewed 7.4k times · Source

I have windows. And I want to create an C++ op using library tensorflow. From this site https://www.tensorflow.org/guide/extend/op#compile_the_op_using_your_system_compiler_tensorflow_binary_installation I understood that I should do folowing:

TF_CFLAGS=( $(python -c 'import tensorflow as tf; print(" ".join(tf.sysconfig.get_compile_flags()))') )
TF_LFLAGS=( $(python -c 'import tensorflow as tf; print(" ".join(tf.sysconfig.get_link_flags()))') )
g++ -std=c++11 -shared zero_out.cc -o zero_out.so -fPIC ${TF_CFLAGS[@]} ${TF_LFLAGS[@]} -O2

I did that. But I got next problem:

In file included from C:\Python\Python37\lib\site-packages\tensorflow\include/tensorflow/core/framework/op_def_builder.h:24,
                 from C:\Python\Python37\lib\site-packages\tensorflow\include/tensorflow/core/framework/op.h:23,
                 from zero_out.cc:4:
C:\Python\Python37\lib\site-packages\tensorflow\include/tensorflow/core/framework/op_def.pb.h:10:10: fatal error: google/protobuf/port_def.inc: No such file or directory
 #include google/protobuf/port_def.inc
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.

I don't understand how can I solve this problem. I would be really grateful if you can help me to solve this problem

Answer

chandrakant_k picture chandrakant_k · Sep 10, 2020

I think you might have solved the problem by now, but for the reference of others posting one possible solution. Find the tensorflow include directory path and include it while compiling your code. You can manually check that the header file (missing in your case) is present in the include path.

tf_include_dir=($(python -c "import tensorflow as tf; print(tf.sysconfig.get_include())"))

and modify your compile command to include the tf_include_dir i.e.

g++ -std=c++11 -Itf_include_dir -shared zero_out.cc -o zero_out.so -fPIC ${TF_CFLAGS[@]} ${TF_LFLAGS[@]} -O2