MXNET移植到Android,編譯成功
這兩天在看如何將mxnet編譯成so庫放在Android上使用,發現網上的資料並不多,因此自己寫一下整個過程,給大家借鑑一下。
主要參考的連線是:連結
1、首先需要下載一下NDK,按照上面連結中提到的版本,我們下載的版本是13b的,下載連線:點選開啟連結
然後是生成獨立的工具鏈:
cd yourpath/android-ndk-r13b/build/tools
python make_standalone_toolchain.py --arch arm --api 21 --install-dir yourpath/android-toolchain --stl=libc++
api21對應的android版本似乎是5.0,應該足夠
2、OpenBLAS安裝
export PATH=$PATH:yourpath/android-toolchain/bin git clone https://github.com/xianyi/OpenBLAS.git cd OpenBLAS make TARGET=ARMV7 HOSTCC=gcc CC=arm-linux-androideabi-gcc NOFORTRAN=1 make PREFIX=yourpath/openblas install
這一塊沒有什麼問題
3、mxnet下載
git clone --recursive https://github.com/dmlc/mxnet.git
git下來之後,按照上面提到的mxnet的版本v0.10.0或者v0.9.3 但是下面又說了commit hash 是799ed45,所以我們還是checkout到這個commit,發現這應該是應該比較新的版本,2017年7月的提交這個commit。
git checkout 799ed45
因為mxnet裡有一些submodule,checkout到上面這個commit之後,還需要submodule的update
git submodule update
可以看到程式碼庫是有一些區別的,在最新的程式碼中,很多子模組都是放在3rdparty資料夾裡,但是之前是沒有3rdparty資料夾的。
4、準備編譯工具鏈
cd mxnet/amalgamation export PATH=$PATH:yourpath/android-toolchain/bin export CC=arm-linux-androideabi-clang export CXX=arm-linux-androideabi-clang++
將Makefile裡的OPENBLAS_ROOT的值修改成自己安裝的位置
修改NNVM的Makefile(位於mxnet/nnvm/amalgamation/Makefile),不要問我為什麼,我也不知道為什麼:
DEFS+=-DMSHADOW_USE_CUDA=0 -DMSHADOW_USE_MKL=0 -DMSHADOW_RABIT_PS=0 -DMSHADOW_DIST_PS=0 -DMSHADOW_USE_SSE=0 -DDMLC_LOG_STACK_TRACE=0 -DMSHADOW_FORCE_STREAM -DMXNET_USE_OPENCV=0 -DMXNET_PREDICT_ONLY=1 -DDISABLE_OPENMP=1
最後在mxnet/amalgamation/amalgamatio.py中修改:
... print >>f, ''' #define fopen64 std::fopen #comment<<<<<<line:130 #if defined(__MACH__) #include <mach/clock.h> #include <mach/mach.h> #endif ...
增加一個fopen64的巨集定義
注意使用的python2,python3的話print函式會報錯,如果你正在使用的是python3可以用一個虛擬環境到python2.
5、編譯
make clean make ANDROID=1最後終於大功告成,下面就可以試試能不能用啦。
相關推薦
MXNET移植到Android,編譯成功
這兩天在看如何將mxnet編譯成so庫放在Android上使用,發現網上的資料並不多,因此自己寫一下整個過程,給大家借鑑一下。主要參考的連線是:連結1、首先需要下載一下NDK,按照上面連結中提到的版本,我們下載的版本是13b的,下載連線:點選開啟連結然後是生成獨立的工具鏈:c
android studio 引入系統庫的程式碼全部變紅,編譯還能成功的解決辦法
在一次android studio 卡住不動的時候,直接殺死其程序關閉,導致再啟動後,程式碼中引入的系統庫的import 等都變紅,但是編譯還能成功,從別處看到一個處理的方法, 點選File 彈出 選擇第一個,然後androidstudio自動重啟,重啟
分享幾個開源的android專案的原始碼,基本上用androidstudio都可以編譯成功
轉自:http://blog.csdn.net/liuqz2009/article/details/53507472 Android開源專案有很多,但是完整的app專案不多,下面是最近我從 jcodecraeer網站 整理的一些開源app專案: 注: jcodecr
windows下編譯最新版ffmpeg3.3-android,並通過CMake方式移植到Android studio2.3中
windows下編譯最新版ffmpeg3.3 編輯ffmpeg資料夾下面的configure檔案,找到 SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)' LIB_INSTALL_EXTRA_CMD='$$
cocos2d-x 移植到android中編譯的一些問題:fatal error: Box2D/Box2D.h: No such file or directory"
cocos2 app nal get dsc err 2dx ros blue 1、fatal error: Box2D/Box2D.h: No such file or directory" 須要加入box2d庫的支持,改動android.mk
NDk編譯opencv for Android,並引用在Unity3d遊戲中的一般步驟
ret app sset cpp unity3d 環境 ptr small var 本文使用:Unity3d + opencv + Android Unity3d中可以調用opencv 編譯好的.so 動態庫,在生成Android apk時可以正常運行。 因為An
spark原始碼編譯成功案例, 版本,修改點
1.spark的下載 開啟網址spark.apache.org,點選download,選擇想要下載的版本,我這裡選擇了最新的2.2.0版本 在choose a package type 中選擇source code,獲取spark2.2.0的下載映象,即可完成下載。 (官網有時候版本切換
Android room定製,編譯
android 預設編譯步驟 1.source build/envsetup.sh 2.lunch 3.kheader(mtk不用) 4.make -j8 5.make -j8 2>&1 |tee log.txt 編譯某個資料
解決Android studio編譯大檔案,狂佔記憶體、卡爆的問題
本人使用Android studio3.1進行NDK/JNI開發,遇到編譯一個11.4M的巨大.h檔案(儲存一個5萬行的陣列),編譯器預設1024M記憶體,完全不夠用,編譯後狂戰記憶體直至卡爆。 解決方法:調整Android studio記憶體設定 Help -> Edit Custo
android實現檢測app是否有通知許可權,沒有就跳轉去設定,設定成功返回時並測試發出一條通知訊息
1.判斷是否有通知許可權 2.沒有的話,彈出一個對話方塊,提示使用者是否去設定,使用者點選確定後跳轉到設定頁面 3.手動設定許可權成功後,結果會返回到 onActivityResult方法中,其中返回的請求碼等於傳入的碼時,並且結果碼等於2,編輯正確設定了,此時就可以呼
Android room定製,編譯流程
android 預設編譯步驟 1.source build/envsetup.sh 2.lunch 3.kheader(mtk不用) 4.make -j8 5.make -j8 2>&1 |tee log.txt 編譯某個資料夾 cat m
解決Android 原始碼編譯“audio_processing_impl”時,報錯“fatal error: list: No such file or directory”問題
我的系統是Linux Mint 17,使用的平臺是Tiny4412,編譯的是友善之臂提供的Android 4.2.2 原始碼。之前編譯沒有問題,今天編譯時,報出這個錯誤,查遍 百度/Google 都沒解決,後來發現是我之前手賤多配置了一個環境變數 NDK_ROOT 導致的問
android studio NDK使用,編譯c生成.so實踐記錄
開發環境,android studio 2.1.2,SDK環境和NDK環境 SDK不說了,NDK環境配置網上也有很多,這裡就簡單記錄下: 1 下載NDK並安裝到電腦 D:\android\android-ndk-r11c 2 android studio中右鍵專案進入選單
android studio 編譯問題,依賴找不到
最近剛剛開始正式使用android studio 編譯各種問題 不是appcompat_v7找不到,就是build-tools 版本有問題,再有就是你的測試用手機的android 版本也會影響 下面總結一下編譯常見的錯誤 1.appcompat_v7 找不到問題,需要在工程
Linux 4.4核心移植以及Android系統編譯
Android預移植到tiny4412 kernel for tiny4412 前面的文章已經把uboot給弄好了,下面就可以用自己移植的uboot來啟動核心了。對於核心的移植,一開始選擇的是linux4.4的核心,為什麼選4.4,因為開始的時候是想
vlc android的編譯及截圖,錄製視訊等功能
編譯的環境是ubuntu 12.04,要安裝好java,配置好環境變數,按照http://wiki.videolan.org/AndroidCompile配置好,就可以編譯了。 export JAVA_HOME=/home/sunlit/jdk1.6.0_38/
VS2013 Debug版本編譯成功,Release失敗
在Debug模式下編寫程式碼完成後,切換到Release編譯爆出一堆的問題,還好有萬能的百度。研究發現是因為Debug和Release兩個的屬性配置不是通的。也就是你在Debug配置過後還要在Release也要配置。標頭檔案、巨集定義等等。全配置上編譯一下就聽過了。如果還有錯
關於命令列中javac 編譯成功,用 java 執行 class 檔案出現 “ 找不到或無法載入主類 ” 的問題
javac編譯成功,用java執行class檔案出現“找不到或無法載入主類”的問題所在 學習android,順便又學習下java. 在這裡推薦Mars老師的視訊,很好用,無論是Java4Android還是Android開發系列視訊教程都很好http://www.marschen.com/ 入門就遇到這樣的問
iOS xmpp一定編譯成功的安裝版本,完美解決Module 'libxmlSimu' not found。
xmpp git 地址: https://github.com/robbiehanson/XMPPFramework 1.下載好XMPP專案,放在本地 2. 新建一個專案 3.按照下面的截圖,把相關的資料夾copy進專案根目錄 注意: 把檔案新增進來。 進入 ta
Eclipse工程檔案拷貝到Android Studio下,編譯出現亂碼錯誤
錯誤如截圖所示: 【錯誤原因】:Eclipse中utf-8編碼帶有BOM Header位元組,載入到Android Studio中時,被轉換為utf-16導致該問題出現,如截圖右下角所示UTF-16