About "libtrtserver.so: undefined reference" Error

Hi,

I am currently trying to build TensorRT inference server from source and I get the following error:

libtrtserver.so: undefined reference to `TRTISTF_TensorDataTypeByteSize'
libtrtserver.so: undefined reference to `TRTISTF_ModelDelete'
libtrtserver.so: undefined reference to `TRTISTF_TensorDataByteSize'
libtrtserver.so: undefined reference to `TRTISTF_ModelOutputs'
libtrtserver.so: undefined reference to `TRTISTF_ModelRun'
libtrtserver.so: undefined reference to `TRTISTF_ErrorDelete'
libtrtserver.so: undefined reference to `TRTISTF_ModelInputs'
libtrtserver.so: undefined reference to `TRTISTF_TensorDataType'
libtrtserver.so: undefined reference to `TRTISTF_ModelCreateFromSavedModel'
libtrtserver.so: undefined reference to `TRTISTF_TensorSetString'
libtrtserver.so: undefined reference to `TRTISTF_TensorString'
libtrtserver.so: undefined reference to `TRTISTF_TensorShape'
libtrtserver.so: undefined reference to `TRTISTF_TensorData'
libtrtserver.so: undefined reference to `TRTISTF_TensorNew'
libtrtserver.so: undefined reference to `TRTISTF_TensorListNew'
libtrtserver.so: undefined reference to `TRTISTF_TensorListDelete'
libtrtserver.so: undefined reference to `TRTISTF_ModelCreateFromGraphDef'
collect2: error: ld returned 1 exit status
src/servers/CMakeFiles/main.dir/build.make:206: recipe for target 'src/servers/trtserver' failed
make[6]: *** [src/servers/trtserver] Error 1
CMakeFiles/Makefile2:758: recipe for target 'src/servers/CMakeFiles/main.dir/all' failed
make[5]: *** [src/servers/CMakeFiles/main.dir/all] Error 2
Makefile:129: recipe for target 'all' failed
make[4]: *** [all] Error 2
CMakeFiles/trtis.dir/build.make:115: recipe for target 'trtis/src/trtis-stamp/trtis-build' failed
make[3]: *** [trtis/src/trtis-stamp/trtis-build] Error 2
CMakeFiles/Makefile2:406: recipe for target 'CMakeFiles/trtis.dir/all' failed
make[2]: *** [CMakeFiles/trtis.dir/all] Error 2
CMakeFiles/Makefile2:418: recipe for target 'CMakeFiles/trtis.dir/rule' failed
make[1]: *** [CMakeFiles/trtis.dir/rule] Error 2
Makefile:235: recipe for target 'trtis' failed
make: *** [trtis] Error 2

Why TRTIS can’t find those references?

--- a/src/backends/tensorflow/CMakeLists.txt
+++ b/src/backends/tensorflow/CMakeLists.txt
@@ -42,6 +42,7 @@ set(
   savedmodel_backend.cc
   savedmodel_backend_factory.cc
   tf_utils.cc
+  tensorflow_backend_tf.cc
 )

Hi
I have a lot of protobuf error when cmake build tensorflow_backend_tf.cc
How can I cmake build tensorflow_backend_tf.cc ?

In tensorflow_backend_tf.cc

#include <tensorflow/cc/saved_model/loader.h>
#include <tensorflow/cc/saved_model/tag_constants.h>
#include <tensorflow/core/framework/tensor.h>
#include <tensorflow/core/framework/tensor_shape.pb.h>
#include <tensorflow/core/framework/types.pb.h>
#include <tensorflow/core/graph/default_device.h>
#include <tensorflow/core/grappler/utils.h>
#include <tensorflow/core/lib/core/status.h>
#include <tensorflow/core/platform/env.h>
#include <tensorflow/core/protobuf/meta_graph.pb.h>
#include <tensorflow/core/public/session.h>
#include <tensorflow/core/public/session_options.h>

How can I make sure protobuf version in trtis build match to protobuf version in libtensorflow_cc.so ?

I fix it like this:
My protoc version in libtensorflow_cc.so build is 3.8.0,
In trtis build, once “git clone ” for grpc-repo submodule protobuf is ready, git checkout branch “origin/3.8.x”
And link the tensorflow head dir, protobuf head dir to /usr/include/

I find the below patch can’t work.

--- a/build/CMakeLists.txt
+++ b/build/CMakeLists.txt
@@ -91,6 +91,7 @@ ExternalProject_Add(grpc-repo
 ExternalProject_Add(protobuf
   PREFIX protobuf
   SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/grpc-repo/src/grpc/third_party/protobuf/cmake"
+  GIT_TAG "3.8.x"

Thanks! I will try the fix and post back here if it works on my side.