3

我的平台:

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的链接

我检查了 pngfix.c 的 2151 行。它是 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 }
4

3 回答 3

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!希望这可以帮助。

于 2013-11-02T06:57:50.227 回答
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 时找不到它,并且该错误是由于需要较新版本的 zlib 的 libpng。

解决方案是简单地运行 ./configure 并将 LDFLAGS 和 CPPFLAGS 设置为 lib 并包含安装较新版本 zlib 的目录。就我而言:

LDFLAGS=-L$HOME/.local/lib CPPFLAGS=-I$HOME/.local/include ./configure --prefix=$HOME/.local

希望这可以帮助!

于 2014-10-14T17:58:22.530 回答
1

我认为弗洛的最好。在centos 6.5上为我工作。

进一步来说:

sudo LDFLAGS="-L/usr/local/lib" CPPFLAGS="-I/usr/local/include" ./configure
于 2015-01-23T10:24:32.157 回答