3

私のプラットフォーム:

Centos 6.X、Matplotlib-1.3.1、Numpy-1.8.0、Scipy 0.14.0.dev-bb608ba

.png ファイルを表示するために libpng-1.6.6 をインストールしようとしていますが、インストールしようとすると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.8/libpng-1.6.6 の代わりに zlib-1.2.7/libpng-1.5.9 です! お役に立てれば。

于 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 の要件からエラーが発生します。

解決策は、LDFLAGS と CPPFLAGS を lib に設定して ./configure を実行し、新しいバージョンの zlib がインストールされているディレクトリをインクルードすることです。私の場合:

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

お役に立てれば!

于 2014-10-14T17:58:22.530 に答える
1

私はFlo'sが最高だと主張します。centos 6.5で私のために働きました。

すなわち:

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