web-dev-qa-db-fra.com

référence non définie au symbole 'décompresser', DSO manquant en ligne de commande

J'essaie de compiler manuellement mon extension iconv php afin qu'il utilise libiconv au lieu de glibc. J'ai téléchargé libiconv et configuré avec ./configure --prefix=/usr/local, make puis Sudo make install.

J'ai trouvé ces instructions sur la compilation manuelle: https://stackoverflow.com/questions/4743080/how-can-i-force-php-to-use-the-libiconv-version-of -iconv-lieu-du-centos-in/4851065 # 4851065

J'ai une version 5.6.10 de PHP et elle a été installée à l'aide de phpbrew. J'ai donc commencé à l'étape 3.

À l'étape 5 (make), j'ai rencontré l'erreur suivante:

/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

Voulez-vous savoir comment résoudre ce problème? Merci beaucoup.

2
sabanana

J'ai résolu ce problème en modifiant la Makefile et en ajoutant -lz à EXTRA_LIBS.

  1. Recherchez Makefile dans le répertoire php.
  2. Rechercher EXTRA_LIBS.
  3. Ajoutez le drapeau -lz.

Cela renvoie à la bibliothèque qui manquait. -lz liens à zlib .

Cette solution est basée sur réponse de kevinf à erreur de liaison étrange: DSO manquant sur la ligne de commande sur dépassement de capacité.

2
sabanana