概述

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使用

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐