編譯使用tensorflow c版本動態鏈接庫


注意:如果是linux或mac os操作系統,可以參考https://www.tensorflow.org/install/install_c,直接下載對應的so庫和頭文件,然后跳到步驟4。如果不能使用,再從源碼編譯。

 

1.下載tensorflow源碼

  git clone --recursive https://github.com/tensorflow/tensorflow

  假設路徑為:tensorflow_repo_path

2.安裝bazel

  mac os可以直接brew install bazel,沒法聯網安裝的可以下載sh文件安裝,也很簡單

3.編譯源碼,生成so庫

  進入tensorflow_repo_path/tensorflow文件夾,執行:

  bazel build :libtensorflow.so

4.添加必要路徑

  最簡單方法是直接把include中文件復制到/usr/local/include,把lib中文件復制到/usr/local/lib,或者修改對應的環境變量LD_LIBRARY_PATH,並在編譯的時候指定       include目錄。

5.編譯運行測試程序

  依然是https://www.tensorflow.org/install/install_c上的內容,直接把下面代碼保存成helloTF.c文件

#include <stdio.h>
#include <tensorflow/c/c_api.h>

int main() {
  printf(“Hello from TensorFlow C library version %s\n”, TF_Version());
  return 0;
}

  如果使用gcc編譯,除了-L和-I中添加對應的庫、頭文件路徑,還要加上-ltensorflow,如果使用xcode這類ide,也要在ide中添加相應路徑、鏈接庫

  編譯成功后,把libtensorflow.so復制到可執行文件同一目錄下(如果已經在/usr/local/lib或者在LD_LIBRARY_PATH中就不需要復制了),運行可執行文件,得到下面   的結果,即說明運行成功:

  

6.其他

  tensorflow目前已經支持多種語言,並且可以編譯對應的庫文件,具體可以參考tensorflow_repo_path/tensorflow/BUILD文件,這里面有多個編譯目標,c++的目前   也已經支持,不過相關參考資料太少,只有tensorflow_repo_path/tensorflow/cc/tutorials/example_trainer.cc一個例子。

7.參考資料

  https://medium.com/jim-fleming/loading-tensorflow-graphs-via-host-languages-be10fd81876f

  https://medium.com/jim-fleming/loading-a-tensorflow-graph-with-the-c-api-4caaff88463f#.z4qeoyfb0

  https://www.tensorflow.org/install/install_c


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM