Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
机器未来
Paddle
提交
73f6056b
P
Paddle
项目概览
机器未来
/
Paddle
与 Fork 源项目一致
Fork自
PaddlePaddle / Paddle
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Paddle
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
73f6056b
编写于
5月 30, 2019
作者:
T
tensor-tang
提交者:
GitHub
5月 30, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
lite mobile arm linux docker and init doc (#17740)
* arm linux docker and mobile doc * update
上级
69e98260
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
151 addition
and
1 deletion
+151
-1
paddle/fluid/lite/tools/Dockerfile.cross_compile
paddle/fluid/lite/tools/Dockerfile.cross_compile
+20
-1
paddle/fluid/lite/tools/mobile_readme.md
paddle/fluid/lite/tools/mobile_readme.md
+131
-0
未找到文件。
Dockerfile.android
→
paddle/fluid/lite/tools/Dockerfile.cross_compile
浏览文件 @
73f6056b
...
...
@@ -2,6 +2,7 @@
FROM ubuntu:16.04
MAINTAINER PaddlePaddle Authors <paddle-dev@baidu.com>
# change name to cross compile
ARG UBUNTU_MIRROR
RUN /bin/bash -c '\
if [[ -n ${UBUNTU_MIRROR} ]]; then \
...
...
@@ -18,6 +19,7 @@ RUN apt-get install -y --no-install-recommends \
g++ \
git \
graphviz \
less \
make \
patch \
python \
...
...
@@ -31,12 +33,29 @@ RUN apt-get autoremove -y && apt-get clean
RUN ln -s clang-format-3.8 /usr/bin/clang-format
RUN pip install --upgrade pip
RUN pip install pre-commit wheel
RUN cd /tmp && curl -O https://dl.google.com/android/repository/android-ndk-r17c-linux-x86_64.zip
# for cmake 3.10
RUN curl -O https://mms-res.cdn.bcebos.com/cmake-3.10.3-Linux-x86_64.tar.gz && \
tar xzf cmake-3.10.3-Linux-x86_64.tar.gz && \
mv cmake-3.10.3-Linux-x86_64 /opt/cmake-3.10 && \
mv /usr/bin/cmake /usr/bin/cmake.bak && ln -s /opt/cmake-3.10/bin/cmake /usr/bin/cmake && \
mv /usr/bin/ccmake /usr/bin/ccmake.bak && ln -s /opt/cmake-3.10/bin/ccmake /usr/bin/ccmake
RUN cd /opt && unzip /tmp/android-ndk-r17c-linux-x86_64.zip
# for arm linux
RUN apt-get install -y --no-install-recommends \
g++-arm-linux-gnueabi \
gcc-arm-linux-gnueabi \
g++-arm-linux-gnueabihf \
gcc-arm-linux-gnueabihf \
gcc-aarch64-linux-gnu \
g++-aarch64-linux-gnu
# for android
RUN cd /tmp && curl -O https://dl.google.com/android/repository/android-ndk-r17c-linux-x86_64.zip
ENV NDK_ROOT /opt/android-ndk-r17c
# clean
RUN rm -rf /tmp/android-ndk-r17c-linux-x86_64.zip /cmake-3.10.3-Linux-x86_64.tar.gz
paddle/fluid/lite/tools/mobile_readme.md
0 → 100644
浏览文件 @
73f6056b
# Paddle-lite-mobile交叉编译指导
Paddle-lite-mobile开发环境目前推荐在Docker容器里,在容器里进行交叉编译安卓版本的Native C/C++代码,然后将可执行程序
`adb push`
到安卓手机上进行调试。
## Android
TBD
### 1. 拉取代码创建容器
```
shell
$
git clone
--recursive
https://github.com/PaddlePaddle/Paddle.git
$
git checkout incubate/lite
```
先根据仓库下的
`Dockerfile.cross_compile`
文件生成对应的环境镜像。
```
shell
$
cd
<paddle-repo>
$
mkdir
android-docker
$
cp
Dockerfile.android ./android-docker/Dockerfile
$
cd
android-docker
$
docker build
-t
paddle/paddle-lite-mobile .
```
完成后,可以看到:
```
shell
$
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
paddle/paddle-lite-mobile latest 9c2000469891 5 hours ago 3.88GB
```
基于
`paddle/paddle-lite`
镜像创建容器,并在容器内外建立目录映射关系:
```
shell
$
ddocker run
-v
<your-directory-path>:<your-directory-path>
-tdi
paddle/paddle-lite-mobile
# 启动成功会显示container_id
```
进入容器并切换到Paddle仓库目录:
```
shell
$
docker
exec
-it
<container_id> bash
$
cd
<paddle-repo>
```
### 2. 交叉编译Paddle-lite-mobile的Native C/C++程序
创建名为
`make_paddle_lite_mobile.sh`
的文件:
```
shell
$
touch
make_paddle_lite_mobile.sh
$
chmod
+x make_paddle_lite_mobile.sh
```
打开
`make_paddle_lite_mobile.sh`
文件然后将以下内容复制到该文件中,保存并退出:
```
shell
#!/usr/bin/env bash
# build mobile
mkdir
build
cd
build
# cross-compile native cpp
cmake ..
\
-DWITH_GPU
=
OFF
\
-DWITH_MKL
=
OFF
\
-DWITH_LITE
=
ON
\
-DLITE_WITH_X86
=
OFF
\
-DLITE_WITH_ARM
=
ON
\
-DLITE_WITH_LIGHT_WEIGHT_FRAMEWORK
=
ON
\
-DLITE_WITH_CUDA
=
OFF
\
-DWITH_TESTING
=
ON
# fc层单测
make test_fc_compute_arm
-j
# 小模型单测
#make cxx_api_lite_bin
```
### 3. 上传编译文件到手机上
键盘上
`crtl+q+p`
同时摁下,切换到容器外(容器还在后台运行),将刚刚编译出的程序
`adb push`
到手机上。USB线连接手机,确保
`adb devices`
可以找到手机设备。
```
shell
$
cd
<paddle-repo>
$
adb push ./build/paddle/fluid/lite/api/test_cxx_api_lite /data/local/tmp/
# 进入手机
$
adb shell
# 若多台手机设备先用命令adb devices查看目标手机的序列码
$
cd
/data/local/tmp
# 执行编译的程序
$
./test_cxx_api_lite
```
## ARM Linux
# 在模拟器中运行
TBD
## Android
## ARM Linux
# Q&A
#### 1. adb命令找不到:adb: command not found
解决:
`sudo apt install -y adb`
#### 2. 明明手机USB连接电脑却显示找不到设备:`error: device not found`
解决:
第一步
`lsusb`
命令查看插上拔下手机前后usb设备的变化情况,确定手机设备的ID。 假设
`lsusb`
命令执行显示
`Bus 003 Device 011: ID 2717:9039 `
,则ID是
`0x2717`
;
第二步:创建
`adb_usb.ini`
文件并追加写入ID:
`echo 0x2717 >> ~/.android/adb_usb.ini`
;
第三步:给手机添加权限
`sudo vim /etc/udev/rules.d/70-android.rules`
,根据第一步骤取得的
`ATTRS{idVendor}`
和
`ATTRS{idProduct}`
这两个属性值,在该文件加入该设备信息:
`SUBSYSTEM=="usb", ATTRS{idVendor}=="2717", ATTRS{idProduct}=="9039",MODE="0666"`
;
第四步:重启USB服务:
```
shell
$
sudo chmod
a+rx /etc/udev/rules.d/70-android.rules
$
sudo
service udev restart
```
第五步:重启adb服务,adb devices有设备说明adb安装成功。
```
shell
$
adb kill-server
$
sudo
adb start-server
$
adb devices
# 若显示连接的手机设备,则表示成功
List of devices attached
5cb00b6 device
```
#
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录