分页: 1 / 1

编译libpng库 和 示例代码

发表于 : 2016年10月25日 21:03
523066680
http://www.libpng.org/pub/png/libpng.html
这个库需要zlib的支援

下载 libpng-1.6.26.tar.gz,解压

打开 MSYS2 Shell ,进入该目录
执行
$ ./configure

一切正常,执行
$ make

提示缺少zlib.h:

gcc -E -DHAVE_CONFIG_H -I. \
-DPNGLIB_LIBNAME='PNG16_0' -DPNGLIB_VERSION='1.6.26' -DSYMBOL_PREFIX='' -DP
NG_NO_USE_READ_MACROS -DPNG_BUILDING_SYMBOL_TABLE pnglibconf.c > pnglibconf.tf1
pnglibconf.c:33:19: fatal error: zlib.h: No such file or directory
# include <zlib.h>
^
compilation terminated.
make: *** [Makefile:2153: pnglibconf.out] Error 1

用 everything 找到 mingw/include 目录中带有 zlib.h,
编辑makefile ,搜索 -I,转到 244 行,将
DEFAULT_INCLUDES = -I.
改为
DEFAULT_INCLUDES = -I. -IC:/MinGW/include

继续
$ make
$ make test
$ make install

一切正常
make install后相关文件会复制到 \msys64\usr\local 目录下

或者自己在编译目录中提取

单独编译示例程序pngtest.c

发表于 : 2016年10月25日 21:14
523066680
假设相关库文件放在以下位置:
D:.
├─include
│ png.h
└─lib
libpng16.a
libpng16.la
libpng16.lai
执行
gcc pngtest.c -ID:/Lib/libpng/include -LD:/Lib/libpng/lib -lpng16

提示缺少zlib.h
pngtest.c:73:20: fatal error: zlib.h: No such file or directory
# include "zlib.h"
^
compilation terminated.

已知mingw include 目录有zlib.h,在mingw/lib目录找到对应的库文件为libz.a
修改编译命令重新编译:
gcc pngtest.c -ID:/Lib/libpng/include -IC:/mingw/include -LD:/Lib/libpng/lib -LC:/mingw/lib -lpng16 -lz

无误