# 简介
本文档介绍FastDeploy中的模型SDK,在ARM Linux C++环境下:(1)服务化推理部署步骤;(2)介绍模型推流全流程API,方便开发者了解项目后二次开发。
其中ARM Linux Python请参考[ARM Linux Python环境下的HTTP推理部署](./arm_linux_python_sdk_serving.md)文档。
**注意**:部分模型(如OCR等)不支持服务化推理。
* [简介](#简介)
* [安装准备](#安装准备)
  
  * [1. 硬件支持](#1-硬件支持)
  * [2. 软件环境](#2-软件环境)
* [快速开始](#快速开始)
  
  * [1. 项目结构说明](#1-项目结构说明)
  * [2. 测试 HTTP Demo](#2-测试-http-demo)
    * [2.1 启动HTTP预测服务](#21-启动http预测服务)
* [HTTP API流程详解](#http-api流程详解)
  
  * [1. 开启http服务](#1-开启http服务)
  * [2. 请求http服务](#2-请求http服务)
    * [2.1 http 请求方式一:不使用图片base64格式](#21-http-请求方式一不使用图片base64格式)
    * [2.2 http 请求方法二:使用图片base64格式](#22-http-请求方法二使用图片base64格式)
  * [3. http返回数据](#3-http返回数据)
* [FAQ](#faq)
  
  
# 安装准备
## 1. 硬件支持
目前支持的ARM架构:aarch64 、armv7hf
## 2. 软件环境
1.运行二进制文件-环境要求
* gcc: 5.4 以上 (GLIBCXX_3.4.22) 
  * Linux下查看gcc版本命名(可能因系统差异命令会不同):`gcc --version`; 
  * Linux下C++基础库GLIBCXX的命令(可能因系统差异路径会有不同,可检测自己环境下的情况):`strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX`  
* glibc:2.23以上
  * Linux查看命令:`ldd --version`
2.二次开发编译-环境要求
编译源代码时,除了gcc、GLIBCXX、glibc满足`1.运行二进制文件-环境要求`外,还需要cmake满足要求。
* cmake:  3.0 以上 
  
  * Linux查看命令:`cmake --version`
# 快速开始
## 1. 项目结构说明
根据开发者模型、部署芯片、操作系统需要,在图像界面[飞桨开源模型](https://ai.baidu.com/easyedge/app/openSource)或[GIthub](https://github.com/PaddlePaddle/FastDeploy)中选择对应的SDK进行下载。解压后SDK目录结构如下:
```
.EasyEdge-Linux-m43157-b97741-x86
├── RES                  # 模型资源文件夹,一套模型适配不同硬件、OS和部署方式
│   ├── conf.json        # Android、iOS系统APP名字需要
│   ├── model            # 模型结构文件 
│   ├── params           # 模型参数文件
│   ├── label_list.txt   # 模型标签文件
│   ├── infer_cfg.json   # 模型前后处理等配置文件
├── ReadMe.txt
├── cpp                  # C++ SDK 文件结构
    └── baidu_easyedge_linux_cpp_x86_64_CPU.Generic_gcc5.4_v1.4.0_20220325.tar.gz
        ├── bin          # 可直接运行的二进制文件
        ├── include      # 二次开发用的头文件 
        ├── lib          # 二次开发用的所依赖的库
        ├── src          # 二次开发用的示例工程
        └── thirdparty   # 第三方依赖
└── python  # Python SDK 文件
```
## 2. 测试 HTTP Demo
> 模型资源文件(即压缩包中的RES文件夹)默认已经打包在开发者下载的SDK包中,请先将tar包整体拷贝到具体运行的设备中,再解压缩使用。
SDK中已经包含预先编译的二进制,可直接运行。以下运行示例均是`cd cpp/bin`路径下执行的结果。
### 2.1 启动HTTP预测服务
```
./easyedge_serving {模型RES文件夹路径} 
```
启动后,日志中会显示如下设备IP和24401端口号信息:
```
HTTP is now serving at 0.0.0.0:24401
```
此时,开发者可以打开浏览器,输入链接地址`http://0.0.0.0:24401`(这里的`设备IP和24401端口号`根据开发者电脑显示修改),选择图片来进行测试。
