簡體   English   中英

如何使用 TensorFlow C++ api 作為共享庫與 bazel?

[英]How to use TensorFlow C++ api as a shared library with bazel?

Now I can build TensorFlow C++ api as a shared library refer to make shared libraries with Bazel at Tensorflow , libtensorflow_cc.so and libtensorflow_framework.so file can be locate at bazel-bin/tensorflow .

我對bazel不熟悉,我應該如何使用那些帶有bazel的TF共享庫來編寫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. 使用共享庫( libtensorflow_cc.so或/和libtensorflow_framework.so ),使用 header 庫文件 ( .h ) 編譯 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM