1. 程式人生 > >Ubuntu16.04編譯tensorflow的C++介面

Ubuntu16.04編譯tensorflow的C++介面

之前有一篇介紹到在windows下利用VS2015編譯tensorflow的C++介面,接下來這篇就介紹下在Ubuntu下編譯tensorflow的C++介面。

先說一下我的電腦配置,首先是Ubuntu16.04,anaconda用的是3.4.2,CUDA用的是9.0的,cudnn用的是7.0.5的。因為已經在anaconda3上安裝好了tensorflow1.7的,但是這次要編譯C++的介面,所以我還是選擇編譯tensorflow1.7的原始碼。

一、準備編譯環境

編譯這裡要用到bazel來編譯,所以要安裝它,Ubuntu下安裝的指令如下:

echo "deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list

然後輸入以下指令:

curl https://bazel.build/bazel-release.pub.gpg | sudo apt-key add -

更新:

sudo apt-get update

安裝bazel:

sudo apt-get install bazel

 

二、下載tensorflow原始碼

tensorflow的原始碼是在github上就可以下載的,目前已經更新到1.11,但是我還是下載了1.7的版本,下載之後解壓出來。

三、配置編譯環境

解壓原始碼之後,進入根目錄,輸入指令:

./configure

接下來就是配置清單:

配置1.png

配置2.png

這裡要說明的是如果有CUDA,那麼Do you wish to build Tensorflow with CUDA?一定要選Y,然後其它的我基本都是N

配置好之後就進行編譯:

bazel build --config=opt --config=cuda //tensorflow:libtensorflow_cc.so

這裡如果不用cuda的話(前面配置的時候就不要在CUDA那一項那裡輸入Y),就輸入:

bazel build --config=opt  //tensorflow:libtensorflow_cc.so

然後是等待,這個過程大概會花費30分鐘左右,而且CPU的佔用量是達到100%的,所以這個時候最好就不要坐別的事情了。

編譯之後我這裡會有一個問題:

錯誤1.png

這個錯誤並不是因為檔案沒有而是因為找不到,實際上,這個檔案就在tensorflow-r1.7/tensorflow資料夾下,但是需要修改/tensorflow-r1.7/tensorflow/BUILD這個檔案才行,開啟這個檔案之後修改大概在812行,註釋掉後,另起一行設定正確的路徑:

錯誤1.png

修改之後重新輸入編譯的指令編譯一次就可以了。編譯好之後在資料夾tensorflow-r1.7/bazel-bin/tensorflow下面,會有兩個so檔案:libtensorflow_cc.so和libtensorflow_framework.so,這兩個就是我們需要的。

四、一些錯誤

下面這幾個錯誤都是在使用的時候發現的,主要是在編譯的時候有些依賴檔案沒有下載到,所以需要自己去下載。

(1)、nsync_cv.h檔案缺失:

這個檔案一般是會在tensorflow/contrib/makefile/downloads/nsync/public這個資料夾下的,但是我這邊是編譯tensorflow的時候有些依賴檔案沒有下載到導致它缺失,解決方法是存在/tensorflow/contrib/makefile/download_dependencies.sh這個檔案,執行它來下載相關的檔案,相關檔案會放在/home/zcx/tensorflow-r1.7/tensorflow/contrib/makefile/downloads這個資料夾下;

(2)、(2)提示Eigen相關的問題

這個問題跟前面的類似,如果下載了相關的依賴檔案之後,在/tensorflow-r1.7/tensorflow/contrib/makefile/downloads資料夾下找到eigen資料夾,進入之後執行以下指令進行eigen的編譯:

mkdir build
cd build
cmake ..
make
sudo make install

暫時我就遇到這幾個問題,之後如果還有遇到其它問題,我會繼續更新的。

五、參考

1、https://blog.csdn.net/zwx1995zwx/article/details/79064064

 

原文:https://www.bearoom.xyz/2018/09/28/ubuntu16-04%e7%bc%96%e8%af%91tensorflow%e7%9a%84c%e6%8e%a5%e5%8f%a3/