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.so 和 libtensorflow_framework.so 都可以像其他共享库文件 (.so) 一样在您的代码中使用。以下是这样做的常用方法。
- 使用共享库(
libtensorflow_cc.so 或/和libtensorflow_framework.so)使用头库文件(.h)编译 C++ 代码,例如,
g++ -fPIG -Wall -o code code.cpp -L/usr/lib/libtensorflow_cc.so -ltensorflow_cc
- 将
LD_LIBRARY_PATH 设置为.so 文件的位置
- 使用
ldd your_code.out 确认您的可执行文件是否正确链接到共享库。
- 运行可执行文件(例如
./your_code.out)