Document created by Anter on 2018-04-05
編譯準(zhǔn)備
1. 源碼準(zhǔn)備
【方式一】 從 GitHub:https://github.com/tensorflow/tensorflow 現(xiàn)在下載源碼:
$ git clone https://github.com/tensorflow/tensorflow.git
【方式二】在 GitHub 上切換到合適的穩(wěn)定分支玉转,接著下載當(dāng)前分支的 Zip 包,然后解壓便可他宛。
Tips: 兩種方式的差別就是以 Zip 包下載的只能是當(dāng)前分支內(nèi)容踢涌,不能夠自由地進(jìn)行分支的操作和管理号俐,但 Zip 包的下載方式會更加快速。
2. 環(huán)境準(zhǔn)備
- jdk 1.8
下載 :http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html ,或者baidu/google尋找資源下載捅伤,下載完畢之后點(diǎn)擊安裝即可
路徑配置:安裝完畢后若是命令行執(zhí)行$ java -version
后得到的是 1.8.x_xx
可以不用配置jdk路徑了
如果不是
1.8
版本則需要配置用戶根目錄的.bash_profile
,insert
模式下巫玻,在文件的最后面添加以下內(nèi)容丛忆,然后wq
方式保存退出,然后執(zhí)行$ source .bash_profile
使得配置生效仍秤。# JDK 1.7
export JAVA_7_HOME=`/usr/libexec/java_home -v 1.7`
# JDK 1.8
export JAVA_8_HOME=`/usr/libexec/java_home -v 1.8`
# JDK 9
export JAVA_9_HOME=`/usr/libexec/java_home -v 9`
# Default
export JAVA_HOME=$JAVA_8_HOME
# alias JDK
alias jdk9="export JAVA_HOME=$JAVA_9_HOME"
alias jdk7="export JAVA_HOME=$JAVA_7_HOME"
alias jdk8="export JAVA_HOME=$JAVA_8_HOME"
查看jdk的安裝路徑 all /usr/libexec/java_home -V
specify version /usr/libexec/java_home -v 1.7
Tips:
---jdk 1.9
use9
but not1.9
--- jdk 1.8 is recommended, otherwise some compile action might go wrong
--- After executing$ source .bash_profile
, restart command linebash
then you can use it
- python
安裝:Mac 系統(tǒng)自帶了一個(gè)Python熄诡,版本是2.7.10,在本次編譯過程中诗力,筆者使用的是系統(tǒng)自帶的Python版本編譯凰浮。若是需要安裝更多的Python版本可以使用以下方式進(jìn)行安裝:
【方式一】訪問 https://www.python.org/downloads/ 選擇合適的版本進(jìn)行下載安裝
【方式二】使用home brew下載:
若是還沒有安裝home brew, https://brew.sh/ 則可以使用系統(tǒng)自帶的ruby
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
給brew
設(shè)置清華源:
$ cd "$(brew --repo)"
git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git
$ cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git
$ brew update
然后使用 brew
指令安裝 python
: $ brew install python
這里默認(rèn)安裝的是最新的穩(wěn)定版本,需要指定版本則在后面加上@xx.xx.xx
, 檢查 brew
中包含的版本:brew search python
設(shè)置python的路徑:用戶的根目錄$ vim .bash_profile
袜茧,再以E(Edit)
的方式菜拓,在后面添加alias python="/usr/local/Cellar/python/3.6.5/bin/python3"
,這里說明一下,brew
下載安裝的目錄是 /usr/local/Cellar/
,在這個(gè)目錄中可以查看所有使用 brew
安裝的軟件/庫惫周,若是想追蹤系統(tǒng)Python的安裝目錄可以
- ndk
【方式一】官網(wǎng)下載地址:https://developer.android.com/ndk/downloads/revision_history.html 建議下載Android NDK, Revision 12b (June 2016)
筆者踩坑了下了一個(gè)最新的版本尘惧,希望tensorflow
能夠早日解決高版本NDK兼容問題。
【方式二】國內(nèi)地址下載:http://www.androiddevtools.cn/ (很感謝網(wǎng)站服務(wù)者递递!為國內(nèi)的小伙伴提供了Android相關(guān)開發(fā)工具的下載)
【方式三】Android SDK manager
中選擇NDK下載喷橙,這個(gè)似乎只能下載到最新的(PS. 筆者踩過這個(gè)坑,使用16.x.xxx
在編譯中出現(xiàn)某些頭文件找不到的問題登舞,希望能夠早點(diǎn)兼容)
Tips: NDK下載完畢之后贰逾,最好是將NDK解壓到與
Android SDK
對應(yīng)的NDK目錄下,方便管理菠秒。
- Android SDK
【方式一】Android Studio
中下載:
Android Studio
下載地址:https://developer.android.com/studio/index.html疙剑, 或者baidu.com中搜索下載。下載完畢后打開軟件進(jìn)行下載(筆者下載了 API 23的版本)
- bazel
安裝了brew
后安裝bazel
就很方便了践叠,直接執(zhí)行$ brew install bazel
3. 開始編譯
-
編輯
WORDSPACE
文件
打開$ git clone
下載的tensorflow
目錄言缤,用文本編輯器編輯WORDSPACE
文件
-
bazel
編譯源碼
cd
到tensorflow
目錄,執(zhí)行./configure
來確認(rèn)你的編譯環(huán)境(可以一直enter
回車就好禁灼,非必須設(shè)置某些項(xiàng)目)
確認(rèn)環(huán)境后使用bazel
執(zhí)行$ bazel build //tensorflow/examples/android:tensorflow_demo
進(jìn)行編譯
整個(gè)編譯過程花費(fèi)了25分鐘
左右管挟,比較漫長,而且CPU的占用率暴增到99% +
弄捕,散熱風(fēng)扇似乎聲音很大僻孝!甚至讓都心疼了,這會兒可以洗個(gè)澡什么的守谓,來壓壓驚穿铆。筆者在第一次編譯的過程中碰到了很多的問題,大多是環(huán)境配置不正確的斋荞,所以也提醒大家荞雏,按照推薦的編譯環(huán)境搭建自己的編譯環(huán)境。稍后筆者整理編譯過程中的問題并作簡單解答譬猫。
最后讯檐,放一張喜聞樂見的結(jié)果圖
Errors:
- fatal error: 'math.h' file not found
https://github.com/tensorflow/tensorflow/issues/13729
NDK版本回退到 12b及以下的版本
更: 2018-04-11
后天海賊王更新!H痉别洪! _
簡單粗暴的
Android Studio
編譯方法!
筆者我在5號
那天花了好多時(shí)間去搭建編譯環(huán)境和使用bazel
編譯柳刮,今天嘗試使用Android Studio
編譯tensorflow anddroid demo
挖垛,發(fā)現(xiàn)so easy!
1. 下載源碼
git clone https://github.com/tensorflow/tensorflow.git
2. 下載 Android Studio
https://developer.android.com/studio/index.html
or
http://www.androiddevtools.cn/
3. 下載安裝 CMake, LLDB, NDK
4.修改gradle 腳本配置
如果設(shè)置為
none
則會下載 TensorFlow 打包好的aar
包痒钝,不在本地使用bazel
進(jìn)行編譯了,當(dāng)然也有其他的選項(xiàng)痢毒,比如cmake
至于為啥改送矩,大致看圖:
所以,我們的項(xiàng)目需要集成tensorflow
庫哪替,可以不需要自己下載編譯tensorflow
庫栋荸,直接加到編譯依賴便可
暫時(shí)到這兒了,后面開發(fā)過程中有出現(xiàn)相關(guān)的問題后繼續(xù)更新(圖片沒有經(jīng)過統(tǒng)一尺寸處理凭舶,還請見諒晌块,找機(jī)會再統(tǒng)一處理)