web-dev-qa-db-ja.com

シンボル「uncompress」への未定義の参照、コマンドラインからのDSOの欠落

Php iconv拡張モジュールを手動でコンパイルして、glibcではなくlibiconvを使用しようとしています。 libiconvをダウンロードし、./configure --prefix=/usr/localmakeSudo make installで構成しました。

手動コンパイルに関する次の指示を見つけました: https://stackoverflow.com/questions/4743080/how-can-i-force-php-to-use-the-libiconv-version-of-iconv-instead- of-the-centos-in/4851065#4851065

Phpバージョン5.6.10があり、phpbrewを使用してインストールされているため、ステップ3から始めました。

ステップ#5(make)で、次のエラーが発生しました。

/usr/bin/ld: ext/standard/.libs/image.o: undefined reference to symbol 'uncompress'
//lib/x86_64-linux-gnu/libz.so.1: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make: *** [sapi/cli/php] Error 1

これを修正する方法を知っていますか?どうもありがとう。

2
sabanana

これを解決するには、Makefileを編集し、-lzEXTRA_LIBSを追加しました。

  1. Makefileディレクトリでphpを探します。
  2. EXTRA_LIBSを検索します。
  3. -lzフラグを追加します。

不足しているライブラリへのリンク。 -lzリンク to zlib .

このソリューションは、スタックオーバーフローの kevinf's answer to ストレンジリンクエラー:DSO missing fromコマンドライン に基づいています。

2
sabanana