Hi3518E 库文件交叉编译
库文件交叉编译
app需要用到的库介绍
1)Openssl,https,rtmps需要用到的加密
2)Libcurl,模拟http,https数据包
3)Zlib,压缩工具,rtmp需要用到
4)Rtmpdump,rtmp协议
5)Mqtt,mqtt协议
一.Openssl
1.因为需要支持https的模拟,所以需要openssl库,如果只支持http,则只要libcurl就可以了,
其实也可以自己写socket来模拟http的,就不需要那么复杂,但是模拟https还是挺复杂的
2.确定版本openssl-OpenSSL_1_1_0
代码来源,https://codeload.github.com/openssl/openssl/tar.gz/OpenSSL_1_1_0l。
3.解压后的代码是这样的
4.配置,注意这个是config,不是configure
./config --prefix=/home/e3518/3518/libr shared no-async no-asm --cross-compile-prefix=arm-himix100-linux-
参数解释
no-asm: 在交叉编译过程中不使用汇编代码代码加速编译过程.原因是它的汇编代码是对arm格式不支持的。
shared: 生成动态连接库。
no-async: 交叉编译工具链没有提供GNU C的ucontext库
–prefix=: 安装路径,编译完成install后将有bin,lib,include等文件夹
–cross-compile-prefix=: 交叉编译工具
5.在第四步中生成的makefile,直接编译失败
6.修改makefile,把该-m64编译选项去掉
7.Make
8. make install
编译成功,后续需要用到的,可以在代码中连接中到这个目录下,当然也可以拷贝到代码的目录下使用
二.Libcurl
1.版本libcurl-7.65.1
2.配置生成makefile
./configure --prefix=/home/e3518/3518/libcur -with-ssl=/home/e3518/3518/libr --build=x86_64-pc-linux-gnu --host=arm-linux-gnueabihf CC=arm-himix100-linux-gcc --host=arm-linux --enable-static
3.make
4. make install
编译成功后,是这样的
三.Zlib
Rtmp需要用到zlib,这里先交叉编译
1.版本zlib-1.2.11
2.由于zlib的配置不支持交叉编译,所以先export出来。
export CC=arm-himix100-linux-gcc
3.配置
./configure --prefix=/home/e3518/3518/libz
3.Make
4.Make install
编译成功
四. Rtmpdump
1.版本rtmpdump-2.3
2.修改makefile,主要是指定交叉编译器,zlib的头路径,库路径,openssl的头路径,库路径
3.根目录下的makefile和librtmp目录下的路径都需要修改
4.修改如下
CROSS_COMPILE=arm-himix100-linux-
XCFLAGS +=-I /home/e3518/3518/libr/include
XCFLAGS += -I /home/e3518/3518/libz/include
XLDFLAGS += -L /home/e3518/3518/libr/lib
XLDFLAGS += -L /home/e3518/3518/libz/lib
5.这次先去掉了openssl,就是这个版本不支持rtmps
6.去掉openssl 的修改
Makefile去掉和openssl相关的库,ssl,crypto
Librtmp目录下,rtmp_sys.h头部增加#define NO_CRYPTO
7.make
编译成功
五.Mqtt
1.版本paho-mqtt-c-v1.3.0
2.来源,合作方
3.在代码下创建一个目录build_hi
4.在build_hi目录下执行
cmake … -DPAHO_BUILD_STATIC=TRUE -DCMAKE_C_COMPILER=/opt/hisi-linux/x86-arm/arm-himix100-linux/bin/arm-himix100-linux-gcc
其中…的意思是,上一级的主目录
5.Make
编译成功
以上是这次需要交叉编译用到的库,在开发应用程序的时候需要用到,如果应用程序是静态编译,不需要把库下载到板子上,如果是动态编译,则需要把库下载到板子上。