How to compile Amalgamation for android
### 如何为Android编译Amalgamation:详细指南 #### 概述 本文将详细介绍如何在Android平台上编译Amalgamation。此过程主要用于构建适用于移动设备的轻量级深度学习框架MXNet。编译Amalgamation是将多个源文件合并成一个单一文件的过程,旨在减少依赖并提高加载速度。下面我们将一步步指导您完成整个流程。 #### 环境配置 在开始之前,请确保您的开发环境满足以下条件: - **操作系统**:Ubuntu 14.04 64位桌面版 - **NDK版本**:android-ndk-r13b 或 android-ndk-r14b - **编译器**:arm-linux-androideabi-clang++ - **MXNet版本**:v0.10.0 或 v0.9.3 - **MXNet提交哈希**:*master799ed45* #### 编译过程中遇到的问题 在尝试编译Amalgamation的过程中可能会遇到以下问题: 1. **错误:找不到`src/c_api/c_api_error.cc`文件** - 解决方案:检查MXNet的源代码目录是否正确包含所需的头文件。 2. **错误:找不到`execinfo.h`文件** - 解决方案:确保您的编译环境中安装了必要的库或头文件。 3. **错误:未声明的标识符`fopen64`** - 解决方案:定义`fopen64`为`std::fopen`,或者如果您的平台支持,直接使用`fopen`。 #### 准备工作 在正式开始编译前,需要做一些准备工作: 1. **设置NDK独立工具链**: - 进入到您的Android NDK路径下的`build/tools`目录。 - 使用Python脚本`make_standalone_toolchain.py`来创建独立工具链,示例如下: ```bash python make_standalone_toolchain.py --arch arm --api 21 --install-dir yourpath/android-toolchain --stl=libc++ ``` 2. **下载并编译OpenBLAS**: - 克隆OpenBLAS仓库。 - 设置环境变量`PATH`以包含工具链二进制文件路径。 - 使用`make`命令进行编译,指定目标架构为ARMv7,并使用`arm-linux-androideabi-gcc`作为交叉编译器。 - 安装编译好的OpenBLAS库。 #### 编译步骤 接下来是具体的编译步骤: 1. **下载MXNet**: - 使用`git clone`命令克隆MXNet仓库。 2. **准备编译Amalgamation**: - 进入到`mxnet/amalgamation`目录。 - 更新环境变量`PATH`以包含工具链二进制文件路径。 - 设置`CC`和`CXX`环境变量以指向工具链中的`arm-linux-androideabi-clang`和`arm-linux-androideabi-clang++`。 3. **修改OpenBLAS路径**: - 在`mxnet/amalgamation/Makefile`中设置`OPENBLAS_ROOT`变量,指向您之前安装的OpenBLAS路径。 4. **添加编译选项**: - 在`mxnet/nnvm/amalgamation/Makefile`中添加特定的定义(DEFS),用于配置MXNet编译选项。 5. **解决`fopen64`问题**: - 可以选择在`Amalgamation.py`或`mxnet_predict-all.cc`文件中添加宏定义`#define fopen64 std::fopen`。 6. **执行编译**: - 最后一步是运行编译命令,这通常涉及到调用`make`命令并传递适当的参数。 通过遵循上述步骤,您可以成功地为Android平台编译Amalgamation。这将有助于您在移动设备上部署和运行深度学习模型。在整个过程中,请确保仔细检查每个步骤,并根据您的具体环境调整配置选项。
- 粉丝: 0
- 资源: 6
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于SSM框架的大学消息通知系统服务端.zip
- (源码)基于Java Servlet的学生信息管理系统.zip
- (源码)基于Qt和AVR的FestosMechatronics系统终端.zip
- (源码)基于Java的DVD管理系统.zip
- (源码)基于Java RMI的共享白板系统.zip
- (源码)基于Spring Boot和WebSocket的毕业设计选题系统.zip
- (源码)基于C++的机器人与船舶管理系统.zip
- (源码)基于WPF和Entity Framework Core的智能货架管理系统.zip
- SAP Note 532932 FAQ Valuation logic with active material ledger
- (源码)基于Spring Boot和Redis的秒杀系统.zip