第三方库介绍——libpng

文章详细介绍了如何在Ubuntu18.04上,使用arm-buildroot-linux-gnueabihf交叉编译器,为100ASK_STM32MP157_PRO开发板编译安装zlib和libpng库。首先下载libpng-1.6.37和zlib-1.2.11,然后分别配置和编译这两个库,最后将编译生成的库文件复制到开发板的相应目录。
摘要由CSDN通过智能技术生成

概述

libpng是一款C语言编写的比较底层的读写PNG文件的跨平台的库。由于依赖于zlib库,所以在安装libpng时往往还需要安装zlib库。

库版本的选择与下载

zlib库和libpng库的下载地址:https://jaist.dl.sourceforge.net/project/libpng/

libpng库下载的版本为:libpng-1.6.37
zlib库下载的版本为:zlib-1.2.11

安装zlib和libpng

由于某些系统可能自带或者在安装其他应用时就装上了zlib,为了避免安装的libpng与系统本身自带的zlib(安装在系统的路径为:/usr/local/lib)有冲突,所以创建一个文件夹用于安装libpng与zlib。

首先将两个压缩包放在同一个路径下

目录结构如图所示:

在这里插入图片描述

安装zlib库

tar -zxvf zlib-1.2.11.tar.gz && cd zlib-1.2.11
./configure --prefix=$PWD/install
make 
sudo make install
make clean

安装libpng库

tar -xzvf libpng-1.6.37.tar.gz && cd libpng-1.6.37
./configure --prefix=$PWD/install --with-zlib-prefix=$PWD/../zlib-1.2.11/install
make 
sudo make install
make clean

在./configure之后会根据当前环境与配置参数自动生成对应的Makefile.in和Makefile。

交叉编译

linux主机:ubuntu-18.04

交叉编译器:arm-buildroot-linux-gnueabihf

开发板kernel:Linux 5.4.0-150-generic x86_64

开发板:100ASK_STM32MP157_PRO开发板

libpng 依赖于 zlib 库, 所以要想移植 libpng 先得移植 zlib 库才可以。

交叉编译zlib库

zlib编译的过程比较简单,./configure不允许传入非指定参数;所以这里通过 $ export CC=xxx 进行配置交叉编译工具

book@100ask:~/Desktop/libpng/zlib-1.2.11$ ./configure -help
usage:
  configure [--const] [--zprefix] [--prefix=PREFIX]  [--eprefix=EXPREFIX]
    [--static] [--64] [--libdir=LIBDIR] [--sharedlibdir=LIBDIR]
    [--includedir=INCLUDEDIR] [--archs="-arch i386 -arch x86_64"]

依次执行下面的指令:

tar -zxvf zlib-1.2.11.tar.gz && cd zlib-1.2.11
export CC=/home/book/100ask_stm32mp157_pro-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin/arm-buildroot-linux-gnueabihf-gcc
./configure --prefix=$PWD/install
make 
sudo make install
make clean

进入到 zlib 安装目录下,将 lib 目录下的所有动态链接库文件拷贝到开发板 Linux 系统/usr/lib 目录
在这里插入图片描述

若原开发板中有该库文件,需要先将出厂系统中原有的 zlib 库文件删除, 在开发板 Linux 系统下执行命令:rm -rf /usr/lib/libz.* /lib/libz.*

交叉编译libpng库

依次输入指令:

tar -xzvf libpng-1.6.37.tar.gz && cd libpng-1.6.37
./configure --prefix=$PWD/install --host=arm-buildroot-linux-gnueabihf CC=/home/book/100ask_stm32mp157_pro-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin/arm-buildroot-linux-gnueabihf-gcc CPPFLAGS="${CPPFLAGS} -I/home/book/Desktop/libpng/zlib-1.2.11/install/include" LDFLAGS="${LDFLAGS} -L/home/book/Desktop/libpng/zlib-1.2.11/install/lib" 
make
sudo make install
make clean
  • –prefix:指定安装目录
  • –host:指定目标主机类型
  • CC:指定交叉编译工具
  • –enable-shared:编译生成.so动态库
  • –enable-static:编译生成.a静态库
  • LDFLAGS:指定链接库目录。不一定需要,看编译具体情况
  • CPPFLAGS:指定头文件目录。不一定需要,看编译具体情况

移植到开发板:进入到 libpng 安装目录,将 bin 目录下的所有测试工具拷贝到开发板 Linux 系统/usr/bin 目录;将 lib 目录下的所有库文件拷贝到 Linux 系统/usr/lib 目录。

libpng的使用

libpng使用

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值