[嵌入式Linux] imx6ull -tslib,jpeg,zlib,libpng,freetype移植记录

由于移植了tslib,jpeg,zlib后才想起做笔记,所以这里只记录移植libpng和freetype的过程

–本机使用环境–
windows 11
VSCode+Docker快速搭建Linux C++开发环境
在docker中拉取了B站up的镜像:
在Mac和Windows下使用VSCode+Docker快速搭建Linux C++开发环境

正点原子IMX6ULL
MobaXterm作为串口连接工具
交叉编译器使用的是neon-poky-linux-gnueabi

libpng移植

移植前需要移植zlib库,这里不做介绍
接着我们开始移植libpng
首先下载libpng源码包,进入https://github.com/glennrp/libpng/releases
我下载了最新的libpng-1.6.43.tar.gz

放入了docker与windows的共享文件夹中
在这里插入图片描述
在解压前,在自己的linux容器中创建好安装位置

在这里插入图片描述
这里我使用了/home/tools/libpng 作为安装目录

接着解压
tar -xzf libpng-1.6.43.tar.gz
解压后进入解压出来的文件夹
在这里插入图片描述
接下来配置交叉编译器
source /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi

libpng依赖于zlib库,前面我们已经将zlib库编译成功了,但是我们得告知编译器zlib库的安装目录,这样编译器才能找到zlib的库文件以及头文件,编译libpng的时才不会报错。
执行下面这三条命令,将zlib库安装目录下的include和lib路径导出到环境变量:

export LDFLAGS=“ L D F L A G S − L / h o m e / d t / t o o l s / z l i b / l i b " e x p o r t C F L A G S = " {LDFLAGS} -L/home/dt/tools/zlib/lib" export CFLAGS=" LDFLAGSL/home/dt/tools/zlib/lib"exportCFLAGS="{CFLAGS} -I/home/dt/tools/zlib/include”
export CPPFLAGS=“${CPPFLAGS} -I/home/dt/tools/zlib/include”

接着配置:
./configure --prefix=/home/tools/libpng/ --host=arm-poky-linux-gnueabi
== --prefix选项指定libpng的安装目录,将家目录下的tools/png作为libpng的安装目录。==

后面就简简单单的
make
make install
安装完打开安装目录查看是否有4个文件夹生成,有即安装成功
在这里插入图片描述

接下来要把linux容器中的bin,include,lib这三个文件夹拷贝到imx6ull中的/usr/目录中
注意不要直接拷贝,因为lib文件夹中有链接文件,直接拷贝可能会让链接丢失,所以我一般把他们压缩成tar.gz再拷贝过去解压

我将3个文件夹压缩后放入了共享文件夹中,方便在windows中拿取:
在这里插入图片描述

接着通过串口工具拷贝到imx6ull中:
在这里插入图片描述
因为的的imx6ull之前安装过老版本的libpng,所以我在植入前需要删除老版本:
rm -rf /lib/libpng* /usr/lib/libpng*

在这里插入图片描述

接下来我使用了正点原子的测试用例:
在我这个环境中还需要改一下传递值:
在这里插入图片描述
在这里插入图片描述
将mmap()函数强制转换一下即可.
执行:
${CC} -o Png png.cpp -I/home/tools/png/include -L/home/tools/png/lib -L/home/tools/zlib/lib -lpng -lz
在这里插入图片描述
运行交叉编译器后生成了Png文件,将Png文件拷贝到imx6uLL中

在这里插入图片描述
最后执行一下测试文件:./Png 123.png
我图片太大了只显示了一部分,但显示成功拉,移植成功
请添加图片描述

freetype移植

其实和上面的步骤一模一样,进入下载链接
https://mirrors.sarata.com/non-gnu/freetype/
我下载了最新的2.13.1

在linux容器中解压,
配置,编译,安装
./configure --prefix=/home/tools/freetype/ --host=arm-poky-linux-gnueabi --with-zlib=yes --with-bzip2=no --with-png=yes --with-harfbuzz=no ZLIB_CFLAGS=“-I/home/tools/zlib/include -L/home/tools/zlib/lib” ZLIB_LIBS=-lz LIBPNG_CFLAGS=“-I/home/tools/libpng/include -L/home/tools/libpng/lib” LIBPNG_LIBS=-llibpng
这里具体的意思可以通过./configure --help或者百度来查看,总的意思就是开启zlib库和libpng库,同时指定这两个库的安装位置
make
make install
这里发现新的freetype安装后不会有bin文件夹,我实测不会对显示文字有影响

在这里插入图片描述
然后就把include文件夹和lib文件夹分别拷贝到imx6ull中的/usr/include和/usr/lib/

最后同样使用了正点原子的测试用例
用下面的语句来编译:

${CC} -o testApp testApp.c -I/home/tools/freetype/include/freetype2 -L/home/tools/freetype/lib -lfreetype -L/home/tools/zlib/lib -lz -L/home/tools/png/lib -lpng -lm

编译成功后拷贝到imx6ull中
运行指令如下:
在这里插入图片描述
测试无误显示成功!
请添加图片描述

  • 12
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值