zlib-1.2.11库、libpng-1.6.36库编译及交叉编译 —— 附带shell编译脚本及源码

news2024/10/5 22:21:53

目录
一、zlib-1.2.11库编译
二、libpng-1.6.36库编译
三、编译zlib和libpng的编译脚本


编译libpng库之前需要先下载编译zlib库,因为libpng需要依赖zlib才能编译通过。
编译环境如下:ubunt 14.04、gcc 4.8.4、arm-hisiv100nptl-linux-gcc
在这里插入图片描述

一、zlib-1.2.11库编译

1.1 zlib编译准备

zlib库官网网址:http://www.zlib.net/
zlib库源码下载地址:http://www.zlib.net/fossils/
因为1.2.11的版本比较新,也比较小,所以我这里下载的时 zlib-1.2.11.tar.gz

1.2 zlib编译过程

将源码压缩包复制到一个空目录,执行下面语句,完成后,就会出现 compile_result的目录,编译好的zlib库就存放在里面。。

tar -xzvf zlib-1.2.11.tar.gz
cd zlib-1.2.11/
CC=gcc ./configure  --prefix=../compile_result
make clean && make && make install
cd ..

编译后目录截图:
在这里插入图片描述

二、libpng-1.6.36库编译

2.1 libpng编译准备

libpng库官网网址:http://www.libpng.org/pub/png/libpng.html0
libpng库源码地址:https://sourceforge.net/projects/libpng/files/libpng16
我这里下载的使 libpng-1.6.39.tar.gz 的版本。

2.1 libpng编译过程

在Linux下编译,我这里是通过修改Makefile的方法来编译的,主要是指定编译器、安装目录、zlib库路径。下面是先解压并复制makefile.linux到编译目录。

tar -xzvf libpng-1.6.36.tar.gz
cd libpng-1.6.36/
cp scripts/makefile.linux ./Makefile

然后修改Makefile文件:修改CCprefixZLIBLIBZLIBINC这几个变量的值,修改如下:

CC=gcc
prefix=../compile_result
ZLIBLIB=../compile_result/lib
ZLIBINC=../compile_result/include

最后执行下面命令编译即可,

make clean && make && make install
cd ..

全部编译完成后,查看 compile_result目录,可以看到libpng.a
在这里插入图片描述

三、编译zlib和libpng的编译脚本

交叉编译,只需要将gcc改为arm-hisiv100nptl-linux-gcc即可,下面是编译脚本

# install_png.sh
# 1.修改 PLATRORM 的值,x86表示用 gcc,ARM 表示用 v100编译器,其他的编译器自行修改脚本
# 2.执行install_png.sh,会生成一个 compile_result_ARM 或 compile_result_x86 目录和其他两个目录
# 3.从 compile_result* 目录拷贝需要的 .h 和 libz.a libpng.a
#
# 只需要修改 PLATFORM 就可以了,如果编译器有改动则改 complie_gcc

#!/bin/sh
PLATFORM=x86
#PLATFORM=ARM

if [ "${PLATFORM}" = "ARM" ];then
complie_gcc=arm-hisiv100nptl-linux-gcc
export INSTALL_PATH=`pwd`/compile_result_ARM
fi

if [ "${PLATFORM}" = "x86" ];then
complie_gcc=gcc
export INSTALL_PATH=`pwd`/compile_result_x86
fi

#编译安装zlib库
tar -xzvf zlib-1.2.11.tar.gz
cd zlib-1.2.11/
CC=$complie_gcc ./configure  --prefix=$INSTALL_PATH
make clean && make && make install
cd ..

#编译安装png库
tar -xzvf libpng-1.6.36.tar.gz
cd libpng-1.6.36/
cp scripts/makefile.linux ./Makefile

sed -i "/CC=gcc/s/CC=gcc/CC=${complie_gcc}/" Makefile #指定编译器

sed -i "/prefix=\/usr\/local/a\prefix=$INSTALL_PATH" Makefile # 安装目录
sed -i '/prefix=\/usr\/local/d' Makefile

sed -i "/ZLIBLIB=..\/zlib/a\ZLIBLIB=$INSTALL_PATH\/lib" Makefile # zlib头文件路径
sed -i '/ZLIBLIB=..\/zlib/d' Makefile

sed -i "/ZLIBINC=..\/zlib/a\ZLIBINC=$INSTALL_PATH\/include" Makefile # zlib库文件路径
sed -i '/ZLIBINC=..\/zlib/d' Makefile

#sed -i "/#RANLIB=echo/a\RANLIB=echo" Makefile
#sed -i "/#LDFLAGS/s/#LDFLAGS/LDFLAGS/" Makefile
#make pngtest

if [ "${PLATFORM}" = "x86" ];then
make test
fi

make clean && make && make install
cd ..

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/37574.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SAP S4客户与供应商如何管理 事务代码 BP

在 S4里里面, “客户”与“供应商”的概念被整合为为“业务伙伴”了 ,所以SAP也用也新的事务代码来管理“业务伙伴” 新的业务代码是BP 。 在旧版本的SAP里面采用供应商和客户的方式来管理业务伙伴,有一些弊端,例如: 1…

[附源码]java毕业设计源冀平行进口车系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

二、进程管理(三)同步与互斥

目录 3.1 临界资源与临界区 3.2 同步与互斥概念 3.3 实现临界区互斥的基本方法 3.3.1 软件实现方法 3.3.1.1 单标志法 3.3.1.2 双标志先检查法 3.3.1.3 双标志后检查法 3.3.1.4 Peterson算法 3.3.2 硬件实现方法 3.3.2.1 中断屏蔽方法 3.3.2.2 硬件指令方法之TestAn…

使用DIV、CSS技术设计的个人博客网页(web期末考试)

🎉精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…

GANs综述

生成式对抗网络GANs及其变体 基础GAN 生成式对抗网络,是lan Goodfellow 等人在2014年开发的,GANs 属于生成式模型,GANs是基于最小值和最大值的零和博弈理论。 为此,GANs是由两个神经网络组成一个Generator。另一个是Discriminat…

dolphinscheduler 2.0.5和2.0.6 体验记录及优化扩展(任务出现kill状态、未设置延时执行出现延时执行、系统变量扩展)

目录🐬未停止工作流的情况下出现kill状态的任务实例🐬未设置延时执行出现延时执行🐠集群服务器时间有误差导致的🐠优化:增加延时时间判断🐬系统变量🐠第N周扩展*️⃣主目录:dolphins…

Kettle:跨库(SQLServer-PostgreSQL)同步多张表数据的详细设计过程

〇、参考地址 1、多个Excel实现同步 https://www.wangt.cc/2021/05/kettle%E5%A4%9A%E4%B8%AA%E8%A1%A8%E4%B8%80%E8%B5%B7%E8%BF%81%E7%A7%BB-%E9%80%9A%E8%BF%87%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E9%85%8D%E7%BD%AE%E9%9C%80%E8%A6%81%E5%90%8C%E6%AD%A5%E7%9A%84%E5%AD…

Java搭建实战基于若依springboot二次开发WMS带移动端管理系统vue源码

大家好啊,我是测评君,欢迎来到web测评。 有个朋友发了一套基于若依开发的springboot源码给我,让我帮忙看一下,录制一期视频教程出来,我看了一下,系统是前后端分离的架构,前端使用Vue2&#xff0…

Ubuntu20.04安装graph-tool

目录step1:查看系统发行版本step2: 在 /etc/apt/sources.list文件中添加一行step3: 下载密钥step4: 更新apt-getstep5: 下载graph-toolstep6:移动graph-tool包到anaconda下step7: 测试是否安装成功链接: 官方安装教程注:如果下列过程中出现权…

cesium在地形上贴地添加各种entity

目录 添加带标签的点 添加billboard 添加corridor 添加面polygon 添加带图片的面polygon 添加矩形 添加glb模型 被遮挡的线用其他颜色标注 添加贴地线 官方示例:Cesium Sandcastlehttps://sandcastle.cesium.com/?srcClamp%20to%20Terrain.html&labelTutor…

都已过35+程序员高危高龄,我为什么还要学习python?

前言 首先声明一点:学习PYTHON,绝不是要去当一名“憔悴的”程序猿~ (文末送读者福利) 去互联网大厂?则更是谈不上。就算我想去,大厂也是看不上。 年龄看不上(已过程序员35岁之高龄&#xff0…

学生个人网页设计作品 学生个人网页模板 简单个人主页成品 个人网页制作 HTML学生个人网站作业设计代做

🎉精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…

LaTex常用技巧6:矩阵编写总结

本文记录和总结了LaTex编写矩阵的一些要点,具体参考这位博主半个冯博士的知乎文章如何用latex编写矩阵(包括各类复杂、大型矩阵)? 无括号矩阵圆括号矩阵方括号矩阵大括号矩阵行列式范数分块矩阵竖实线竖虚线横实线横虚线其他要点横…

redis的下载和安装详解

一、下载redis安装包 进入redis官网查看当前稳定版本: https://redis.io/download/发现此时的稳定版本是6.2.4, 此时可以去这个网站下载6.2.4稳定版本的tar包。 暂时不考虑不在windows上使用redis,那样将无法发挥redis的性能 二、上传tar…

智能疾病查询接口

一、接口介绍 最全的疾病大全,收集了数万种常见疾病,任何常见疾病都可查询。 二、功能体验 三、API文档 3.1 查询疾病科目 3.1.1接入点说明 查询疾病的类别。 3.1.2接口地址 http[s]😕/www.idmayi.com/546-1?idmayi_appid替换自己的值&…

spring复习02,xml配置管理bean

spring复习02,xml配置管理bean获取bean的几种方式1. 通过id获取bean2. 通过class获取bean3. id和class结合来获取bean依赖注入的两种方式setter注入有参构造器注入依赖注入时一些特殊值的处理1.字面量2.null值3.xml实体4.CDATA节为类类属性赋值1.引入已经声明的bean的方式2.内部…

在springboot工程中修改使用quartz创建的定时任务

Quratz是什么: Quartz 是一个完全由 Java 编写的开源作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。 Quartz 可以与 J2EE 与 J2SE 应用程序相结合也可以单独使用。 Quartz 允许程序开发人员根据时间的间隔来调度作业。 Quartz 实现了作业和触发器的…

CTF-misc练习(https://buuoj.cn)之第二页

目录 一、被劫持的神秘礼物 二、刷新过的图片 三、[BTF2020]认真你就输了 四、[BJDCTF2020]藏藏藏 五、被偷走的流量 九、菜刀666 十、秘密文件 十一、[BJDCTF2020]just_a_rar 十二、[BJDCTF2020]鸡你太美 十三、[BJDCTF2020]一叶障目 十四、神奇的二维码 十五、梅…

mysql必知必会

名词 数据库软件 : DBMS(database manager system) 数据库 :database, 通过DBMS创建和操作的容器, 保存有组织的数据的容器,,,通常是一个文件或者一组文件 表: 是一种结构化文件,,…

安科瑞水电预付费平台,远程控制,高校宿舍、员工宿舍、商场等多场合适用

安科瑞 司红霞 一、引言 预付费水表是一种为了适应“先付费后用水”的管理原则和系统而开发的水表产品其设计是在水表基表上加装了电子附加装置和控制阀,要求用户先预付,一定的费用或购置一定数量的水量,将预付费的信息输入水表后才可正常用…