一、libpng库

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

二、库版本的选择与下载

我下载的地址是
https://jaist.dl.sourceforge.net/project/libpng/

下载的版本为:libpng-1.6.37
zlib-1.2.11
这两个版本我实测是可以使用的。
为什么要注意版本呢?因为某些较早版本的zlib库和现在的zlib库有的接口不一样,而对应的libpng库也有所不同。如果安装的版本不一致在编译库时就会报错。

三、安装

1.可以将下面的代码保存为一个shell脚本,放到压缩包同目录直接执行。

#zlib:
#解压:
tar -xf zlib-1.2.11.tar.gz && cd zlib-1.2.11
#安装
./configure
make
sudo make installcd ..
#libpng:
#解压
tar -xzvf libpng-1.6.37.tar.gz && cd libpng-1.6.37#安装
./configure
make
sudo make install
sudo ldconfig

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

#!/bin/bash
#=====================================#
#zlib:
#解压:
tar -xf zlib-1.2.11.tar.gz && cd zlib-1.2.11
#安装
./configure \--prefix=/home/uos/libpng/install
make
sudo make install
make cleancd ..
#libpng:
#解压
tar -xzvf libpng-1.6.37.tar.gz && cd libpng-1.6.37#安装
./configure \--prefix=/home/uos/libpng/install \--with-zlib-prefix=/home/uos/libpng/install
make
sudo make install
make clean

注意:使用了./configure之后,make install需要加sudo
libpng有Makefile.am,在./configure之后会自动生成对应的Makefile.in和Makefile。

此种方法可以用于解决

/lib/libpng16.so.16: undefined reference to
`inflateValidate@ZLIB_1.2.9’ collect2: error: ld returned 1 exit
status

这类由于版本不对应的兼容性错误。有的系统可能由于环境配置问题,执行了./configure后在make时还是会优先找到系统内安装的zlib,这时如果还有这种错误,可以更换libpng版本来编译。

./configure介绍:
Configure脚本配置工具是autoconf的工具的基本应用。

四、测试

如果使用第一种方式安装的libpng的话。
使用gcc test.c -o test -lpng直接链接进行编译,编译器会在系统目录中寻找相关链接的库文件

若使用的是第二种方式,需要指明链接目录:

g++ test1.cpp \
/home/stephane/programs/install/lib/libpng.a \
/home/stephane/programs/install/lib/libz.a \
-I/home/stephane/programs/install/include  -o test

如上所示为静态链接,需注意直接指明库文件时不要加-L,同时使用-I指明头文件包含目录

分别在Ubuntu20、UOS、kylin系统进行了测试。

更新
使用cmake的小伙伴在链接libpng库时,需要保证使用的库在编译时加了-fPIC参数。即在./configure时后缀增加一个"-fPIC"

保姆级Linux系统安装并使用libpng攻略相关推荐

  1. 新手卖家选品参考,保姆级亚马逊选品攻略

    星起航跨境:新手卖家选品参考,保姆级亚马逊选品攻略 没有经验的新卖家在入驻亚马逊之前,还没有想到准备售卖什么产品,就可以根据这三个数据来判断选择的产品是否合适. 1.购物车购买数量 大多数的消费者在购 ...

  2. linux服务配置大全 fedora 8 ftp 百度文库,Linux下VSFTP配置全攻略

    Linux下VSFTP配置全攻略 [日期:2007-10-05] 来源:Linux公社 作者:Linuxidc [字体:大 中 小] 4]如果要以系统中存在的普通用户登入FTP,也没有什么可以设置的, ...

  3. Linux 环境变量配置全攻略

    Linux环境变量配置 在自定义安装软件的时候,经常需要配置环境变量,下面列举出各种对环境变量的配置方法. 下面所有例子的环境说明如下: 系统:Ubuntu 14.0 用户名:uusama 需要配置M ...

  4. LINUX 下播放 DVD 全攻略 (关键字 DVD-ROM LiViD fifo OMS) (转)

    LINUX 下播放 DVD 全攻略 (关键字 DVD-ROM LiViD fifo OMS) (转)[@more@]Linux 下播放 dvd 全攻略 推荐:bfreeboy  发表日期:2001年5 ...

  5. LINUX 下播放 DVD 全攻略 (关键字 DVD-ROM LiViD fifo OMS)

    LINUX 下播放 DVD 全攻略 推荐:bfreeboy  发表日期:2001年5月23日  阅读次数:68 -------------------------------------------- ...

  6. win7下安装Linux实现双系统全攻略

    win7下安装Linux实现双系统全攻略 听语音 http://jingyan.baidu.com/article/c275f6bacc3326e33c756743.html 分区http://jin ...

  7. Linux环境变量配置全攻略

    本文转载自: Linux环境变量配置全攻略 - 悠悠i - 博客园 目录 Linux环境变量配置 Linux读取环境变量 Linux环境变量配置方法一:export PATH Linux环境变量配置方 ...

  8. Linux CentOS7配置ip地址攻略

    本文为joshua317原创文章,转载请注明:转载自joshua317博客 Linux CentOS7配置ip地址攻略 - joshua317的博客 一.背景 公司新来一台服务器,系统已经装好了,操作 ...

  9. Linux下Web服务器架设攻略

    Linux下Web服务器架设攻略 [收藏此页] [打印] [推荐] [挑错] 作者:小云  2004-12-23    内容导航: 概述 [IT168 专稿]今天我们来看看如何将Web服务器架在Lin ...

最新文章

  1. Matlab并行运算
  2. 聊一聊,用户画像的前世今生
  3. js导航条 二级滑动 模仿块级作用域
  4. 关于数据库查询优化的思考
  5. python的前端开发_Python开发【前端】:html
  6. 【stanford】梯度、梯度下降,随机梯度下降
  7. 逻辑分析题汇总(一)
  8. idea解决代码冲突与乱码
  9. 秒杀系统优化方案之缓存、队列、锁设计思路
  10. NASNET-【论文理解】
  11. 2017-2018-1 20155202 《信息安全系统设计基础》第4周学习总结
  12. ERROR Utils: Uncaught exception in thread stdout writer for python
  13. 我将进化成一条狗(10)——长寿秘诀
  14. 网站访问量统计 | hexo
  15. 微信从原版到现在所有界面图片_微信进入界面的图片有什么含义
  16. 解决微信企业号和公众号无法调用摄像头拍视频的问题
  17. 三次样条插值(附完整代码)
  18. alpine linux 简介
  19. 地理空间数据共享资源大汇总
  20. 手机开发实战99——MMS介绍6

热门文章

  1. 【机器学习】LDA算法原理
  2. 锯齿数独 cocos2d-x 开发 (一)
  3. 觉得算法难的看这里-算法动画图解的App算法宝开发历程分享
  4. 踏入物联网第一篇——STM32F103开发板接入阿里云IOT平台
  5. Java 抽象类与接口 编程练习
  6. H3C交换机端口镜像原理
  7. python生成带背景的字符图片(crnn数据集制作)
  8. 计算机丢失cryptui.dll黑屏,提示无法找到cryptui.dll文件
  9. arm中r12(IP)的用途
  10. poweramp音乐播放器+viper4android音效驱动,另一种让V4a音效在Poweramp上生效的方法