TensorFlow若是能二進制包安裝,我真的不想選擇本身編譯,可是狀況不禁人,好不容易找到一臺服務器,CPU不支持AVX指令集,安裝的release版本運行到import tensorflow as tf 就會報指令異常。網上建議源碼安裝才能解決,因而無奈,想着應該是很是繁瑣的事情,但事實上除了耗時外,其餘都還好,這裏記錄一下,以備後用。python
bazel是google的版本構建工具,網上褒貶不一,直接下載安裝包進行安裝:linux
wget https://github.com/bazelbuild/bazel/releases/download/0.13.0/bazel-0.13.0-installer-linux-x86_64.sh
chmod +x ./bazel-0.13.0-installer-linux-x86_64.sh
./bazel-0.13.0-installer-linux-x86_64.sh
這個步驟沒有碰到問題。git
sudo apt install python-numpy swig python-dev python-wheel
numpy是python的科學計算庫,swig是C庫外部語言封裝調用接口庫,後面幾個應該與python包管理相關,不細究。github
使用git來克隆TensorFlow代碼倉庫:服務器
git clone --recurse-submodules https://github.com/tensorflow/tensorflow
比較耗時的操做,文件比較多。工具
進入tensorflow目錄,而後執行./configure,開始配置,除了jemalloc選項外,我都選了Nui
執行如下命令,啓動編譯,過程很是慢,要耐心等待:google
bazel build -c opt //tensorflow/tools/pip_package:build_pip_package
完成編譯後,將tensowflow製做成pip安裝包:spa
bazel-bin/tensorflow/tools/pip_package/build_pip_package ~/
最後,經過pip命令來安裝前一步生成的安裝包,若是沒有先安裝python-pip:命令行
pip install ~/tensorflow-1.8.0-cp27-cp27mu-linux_x86_64.whl
本身編譯的版本能夠正常使用,但運行時出現了以下的命令行提示:
原來這款CPU雖然不支持AVX,可是支持SSE,因而決定從新編譯,在編譯時增長了額外的編譯選項,以下:
build -c opt --copt=-msse4.1 --copt=-msse4.2 //tensorflow/tools/pip_package:build_pip_package
從新打包,安裝。
至此,整個源碼安裝TensorFlow過程所有結束,暫無發現問題,待後續有問題時再補充。