移植环境
交叉编译平台:Ubuntu 16.04.5 LTS
交叉编译工具链:aarch64-himix100-linux
移植平台:Hi3559AV100
由于编译环境是在实验室的电脑中,没有root用户权限,因此所有所需的工具和库都没有使用apt-get工具安装,同时也可能存在一些已经安装好的依赖库,若在移植过程中出现找不到所需工具或相关依赖库的情况,并且本文没有提及的,请自行查阅相关资料或以类似方法安装。
源码下载
- 下载libffi源码(请关闭科学上网)
- 下载zlib源码
- 下载glib源码
- 下载opencv3.2.0源码
解释:
1、glib是opencv的依赖库,也需要进行交叉编译,否则会在opencv交叉编译时报错
/opt/hisi-linux/x86-arm/aarch64-himix100-linux/host_bin/../lib/gcc/aarch64-linux-gnu/6.3.0/../../../../aarch64-linux-gnu/bin/ld: cannot find -lgthread-2.0
/opt/hisi-linux/x86-arm/aarch64-himix100-linux/host_bin/../lib/gcc/aarch64-linux-gnu/6.3.0/../../../../aarch64-linux-gnu/bin/ld: cannot find -lglib-2.0
2、ffi是glib中gobject的依赖库
3、zlib是glib中gio的依赖库
交叉编译链的安装
确保系统中已经安装了相应的交叉编译链,直接在shell中输出交叉编译链的名称查看是否自动补全
若未安装请自行查看相关手册安装对应的交叉编译链
glib的交叉编译
1、交叉编译libffi
# 解压源码包
tar -xvf libffi-3.2.1.tar.gz
cd libffi-3.2.1
#创建输出文件夹
mkdir output
#设置交叉编译工具链
CC=aarch64-himix100-linux-gcc
#执行./configure生成Makefile, prefix是输出目录,注意改成自己的
./configure --prefix=/home/sdc/yuwy/opencv/output-3559 --host=aarch64-himix100-linux
make
make install
#生成的so文件在output/lib64里
#添加路径到pkg-config中,glib编译时才能读取
export PKG_CONFIG_PATH=/home/sdc/yuwy/opencv/output-3559/lib/pkgconfig
pkg-config --cflags libffi
pkg-config --libs libffi
2、交叉编译zlib
#解压缩
tar -xvf zlib-1.2.11.tar.gz
cd zlib-1.2.11.tar.gz
mkdir output
#执行./configure命令生成Makefile,注意将prefix目录替换成自己的输出目录
export CC=aarch64-himix100-linux-gcc
./configure --prefix=/home/sdc/yuwy/opencv/output-3559
make
make install
export PKG_CONFIG_PATH=/home/sdc/yuwy/opencv/output-3559/lib/pkgconfig
pkg-config --cflags zlib
pkg-config --libs zlib
3、交叉编译glib
回到根目录解压缩glib源码包
tar -xvf glib-2.47.3.tar.gz
cd glib-2.47.3
mkdir output
之后需要新建一个配置文件
vim glib.cache
写入
glib_cv_long_long_format=ll
glib_cv_stack_grows=no
glib_cv_have_strlcpy=no
glib_cv_have_qsort_r=yes
glib_cv_has__inline=yes
glib_cv_working_bcopy=no
glib_cv_va_val_copy=yes
glib_cv_uscore=no
glib_cv_rtldglobal_broken=no
ac_cv_func_posix_getpwuid_r=yes
ac_cv_func_posix_getgrgid_r=yes
执行./configure命令生成Makefile,注意将prefix目录替换成自己的输出目录
CC=aarch64-himix100-linux-gcc
./configure --prefix=/home/sdc/yuwy/opencv/output-3559 --host=aarch64-himix100-linux --cache-file=glib.cache
接下来需要修改三个Make