我的平台:
Centos 6.X,Matplotlib-1.3.1,Numpy-1.8.0,Scipy 0.14.0.dev-bb608ba
我正在尝试安装libpng-1.6.6来显示.png文件但是在尝试make
时它没有给出以下错误。
注意:我已经成功预装了zlib(以及freetype2),这可能是错误所指向的。
pngfix.o: In function `zlib_reset':
/usr/lib/hue/libpng-1.6.6/contrib/tools/pngfix.c:2151: undefined reference to `inflateReset2'
collect2: ld returned 1 exit status
make[1]: *** [pngfix] Error 1
make[1]: Leaving directory `/usr/lib/hue/libpng-1.6.6'
make: *** [all] Error 2
请参阅原始帖子matplotlib-pyplot-does-not-show-output-no-error
的链接我检查了2151行的pngfix.c。它是zlib_reset函数,与rc设置有关。是否指向更改一些matplotlibrc设置?
2136 zlib_reset(struct zlib *zlib, int window_bits)
2137 /* Reinitializes a zlib with a different window_bits */
2138 {
2139 assert(zlib->state >= 0); /* initialized by zlib_init */
2140
2141 zlib->z.next_in = Z_NULL;
2142 zlib->z.avail_in = 0;
2143 zlib->z.next_out = Z_NULL;
2144 zlib->z.avail_out = 0;
2145
2146 zlib->window_bits = window_bits;
2147 zlib->compressed_digits = 0;
2148 zlib->uncompressed_digits = 0;
2149
2150 zlib->state = 0; /* initialized, once */
2151 zlib->rc = inflateReset2(&zlib->z, 0);
2152 if (zlib->rc != Z_OK)
2153 {
2154 zlib_message(zlib, 1/*unexpected*/);
2155 return 0;
2156 }
2157
2158 return 1;
2159 }
答案 0 :(得分:5)
解决了libpng安装的问题。
失败的原因显然是版本不兼容,部分原因可能是由于libpng-1.6.6不稳定并且与之前安装的zlib-1.2.8存在冲突。
我卸载了zlib-1.2.8并重新安装了较旧但稳定的版本zlib-1.2.7而不是libpng-1.6.6,下载并安装了libpng-1.5.9并且libpng安装成功通过了测试!
这次没有zlib_reset - 'inflateReset2'问题。不知道是否有更好的解决方案,但无论如何我似乎绕过了问题。所以理想的兼容版本是zlib-1.2.7 / libpng-1.5.9,而不是我一直在尝试的zlib-1.2.8 / libpng-1.6.6!希望这会有所帮助。
答案 1 :(得分:5)
我遇到了同样的问题("未定义引用`inflateReset2'"),并尝试将libpng-1.6.6和libpng-1.6.13与zlib-1.2.8和zlib的-1.2.7。什么都没有用!
然后我遇到了这篇有用的帖子: https://stackoverflow.com/a/21345713
libpng使用libtools进行编译和链接会发生什么,默认情况下libtools只查找/ usr / lib和/ usr / include中的库和头文件。因此,如果您在本地目录中手动安装了较新版本的zlib,则libtools在尝试构建libpng时无法找到它,并且该错误是由libpng对更新版本的zlib的要求造成的。 / p>
解决方案是简单地运行./configure并将LDFLAGS和CPPFLAGS设置为lib并包含安装了较新版本zlib的目录。就我而言:
LDFLAGS=-L$HOME/.local/lib CPPFLAGS=-I$HOME/.local/include ./configure --prefix=$HOME/.local
希望这有帮助!
答案 2 :(得分:1)
我认为弗洛是最好的。为我工作的6.5。
更具体地说:
sudo LDFLAGS="-L/usr/local/lib" CPPFLAGS="-I/usr/local/include" ./configure