第三方库介绍——libpng

news/2024/10/18 14:22:04/

文章目录

  • 概述
  • 库版本的选择与下载
  • 安装zlib和libpng
  • 交叉编译
    • 交叉编译zlib库
    • 交叉编译libpng库
  • libpng的使用

概述

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


http://www.ppmy.cn/news/576146.html

相关文章

java-查询个人信息

个员工都会有自己的档案,主管可以查看在职员工的档案。使用 Java 创建一个员工实体类,然后通过构造方法创建一个名为“王洁”的员工,最后打印出员工档案信息。示例步骤如下。 public class Person {private String name; // 姓名private …

9.个人信息查询接口

1.在UserMapper.xml下添加 <select id"findByUserId" resultType"User">select *from user where id#{user_id}</select>2.在UserMapper.java下添加 User findByUserId(Param("user_id") Integer userId);3.在UserService.java下添…

个人信息管理系统

1.分类 bean&#xff1a;负责数据处理和存储 ​ Customer controller&#xff1a;负责控制 ​ CustomerList util&#xff1a;工具包 ​ CMUtility view&#xff1a;可视化 ​ CustomerView 2.每个代码如下 Customer package bean;/*** 负责数据处理、存储* create:…

个人信息与个人敏感信息

参考《信息安全技术 个人信息安全规范》&#xff08;GB/T 35273-2020&#xff09; 1、个人信息 是指以电子或者其他方式记录的能够单独或者与其他信息结合识别特定自然人身份或者反映自然人活动情况的各种信息&#xff0c;如姓名、出生日期、身份证件号码、个人生物识别信息、…

查询用户信息

1、查询一般都是根据主键的id进行查询&#xff0c;根据前端的要求&#xff0c;探讨前端需要在页面上面展现的数据&#xff0c;就是我们查询后需要返回的数据&#xff0c;放在vo里面进行统一的封装&#xff0c;参数就是我们的主键id // 查询账户信息 1:ApiOperation(value &qu…

个人信息法规

个人信息 关键事件 《未成年人网络保护条例&#xff08;送审稿&#xff09;》向社会公开征求意见 2017年1月6日&#xff0c;国务院法制办公布《未成年人网络保护条例(送审稿)》及其说明&#xff0c;并向社会各界征求意见。送审稿针对网络信息内容建设、未成年人网络权益保障…

数据安全_个人信息查询

个人信息查询 个人信息资产清单查询本文相关网址&#xff08;附录&#xff09;总结用户角度企业角度 引用 个人信息资产清单查询 本文相关网址&#xff08;附录&#xff09; 中国人民银行征信中心官网&#xff1a;http://www.pbccrc.org.cn/火狐Firefox Monitor&#xff1a;ht…