如何使用TensorFlow c++ api与bazel共享库?



现在我可以将TensorFlow c++ api构建为共享库,参考在TensorFlow中与Bazel共享库,libtensorflow_cc.solibtensorflow_framework.so文件可以位于bazel-bin/tensorflow

我不熟悉bazel,我应该如何使用那些TF共享库与bazel写c++代码,你能提供一个这样的例子链接吗?

Bazel只是一个像make或cmake一样的工具。要使用bazel编译代码,必须创建一个构建文件BUILD。假设您的代码位于,例如,tensorflow/tensorflow/test/code.cpp:

#include "tensorflow/core/public/session.h"
#include "tensorflow/core/platform/env.h"
using namespace tensorflow;
...

创建一个BUILD文件(在同一文件夹中),包含如下内容:

cc_binary(
name = "code",
srcs = ["code.cc"],
deps = [
"//tensorflow/core:tensorflow",
]
)

然后使用命令配置和编译代码:

cd tensorflow
./configure
cd tensorflow/tensorflow/test
bazel build :code

在tensorflow根目录下的bazel-bin文件夹下有一个可执行文件。


然而,编译后的代码可能非常大(>100 MB),所以最好将你的代码链接到TensorFlow的共享库。libtensorflow_cc.solibtensorflow_framework.so都可以像其他共享库文件(.so)一样在代码中使用。下面是一种常用的方法。

  1. 使用头库文件(.h)使用共享库(libtensorflow_cc.so或/和libtensorflow_framework.so)编译c++代码,例如:
    g++ -fPIG -Wall -o code code.cpp -L/usr/lib/libtensorflow_cc.so -ltensorflow_cc
    
  2. 设置LD_LIBRARY_PATH.so文件的位置
  3. 使用ldd your_code.out确认您的可执行文件是否正确链接到共享库。
  4. 运行可执行文件(如./your_code.out)

相关内容

  • 没有找到相关文章

最新更新