2016-09-27 1 views
1

J'ai installé les versions 1.2, 1.4 et 1.6 de libpng à partir des fichiers makefiles qu'ils incluent pour MinGW/msys. Il a semblé fonctionner - j'ai les fichiers d'en-tête en divers endroits:MinGW/msys, éditeur de liens (ld.exe) ne trouve pas libpng (-lpng) même s'il est installé, en cours d'exécution xpdf configure script

  • /include
  • /include/libpng
  • /include/libpng12
  • /include/libpng14
  • /local/include
  • /local/include/libpng
  • /local/include/libpng16

ainsi que les fichiers bibliothèque:

  • /lib/libpng.a
  • /lib/libpng.dll.a
  • /lib/libpng12.a
  • /lib/libpng12.dll. un
  • /lib/libpng14.a
  • /lib/libpng14.dll.a
  • /local/lib/libpng.a
  • /local/lib/libpng.dll
  • /local/lib/libpng16.a
  • /local/lib/libpng16.dll

J'appelle le script configure avec bash msys, et il selfs au même endroit, peu importe quelle combinaison d'inclure répertoire et bibliothèque je le nourris. Config.log me donne ce qui suit:

configure:7732: checking png.h usability 
configure:7732: gcc -c -g -O2 -I/local/include conftest.c >&5 
configure:7732: $? = 0 
configure:7732: result: yes 
configure:7732: checking png.h presence 
configure:7732: gcc -E -I/local/include conftest.c 
configure:7732: $? = 0 
configure:7732: result: yes 
configure:7732: checking for png.h 
configure:7732: result: yes 
configure:7761: checking for png_write_row in -lpng 
configure:7786: gcc -o conftest.exe -g -O2 conftest.c -lpng -I/local/include /local/lib/libpng.a -lz >&5 
c:/mingw/bin/../lib/gcc/mingw32/5.3.0/../../../../mingw32/bin/ld.exe: cannot find -lpng 
collect2.exe: error: ld returned 1 exit status 

J'ai essayé toutes les combinaisons de include et bibliothèque énumérés ci-dessus, et il est le même, chaque fois. Il sera

configure:7786: gcc -o conftest.exe -g -O2 conftest.c -lpng -I/include/libpng /lib/libpng.dll.a -lz >&5 
c:/mingw/bin/../lib/gcc/mingw32/5.3.0/../../../../mingw32/bin/ld.exe: cannot find -lpng 

ou

configure:7786: gcc -o conftest.exe -g -O2 conftest.c -lpng -I/local/include/libpng16 /local/lib/libpng16.dll -lz >&5 
c:/mingw/bin/../lib/gcc/mingw32/5.3.0/../../../../mingw32/bin/ld.exe: cannot find -lpng 

ou

configure:7786: gcc -o conftest.exe -g -O2 conftest.c -lpng -I/include/libpng12 /lib/libpng12.a -lz >&5 
c:/mingw/bin/../lib/gcc/mingw32/5.3.0/../../../../mingw32/bin/ld.exe: cannot find -lpng 

Vous obtenez l'image. J'ai compilé avec succès plusieurs autres fichiers xpdf qui ne nécessitent pas libpng. Mais ici, je suis complètement perdu.

Répondre

0

Essayez ceci:

  1. Ajouter le Redist MinGW sur le chemin.
  2. Assurez-vous que la bibliothèque MinGW et les chemins d'inclusion précèdent ceux de Cygwin. (L'en-tête png.h pour les cibles MinGW est incompatible avec l'en-tête png.h pour les cibles Cygwin.)
  3. Lien dynamique libpng. (Les packages mingw64-*-libpng dans Cygwin ne fournissent pas une bibliothèque statique libpng.a, ce qui est inhabituel.)

Par exemple, pour une 64 bits construction:

$ export CC=x86_64-w64-mingw32-gcc 
$ export CXX=x86_64-w64-mingw32-g++ 
$ export PATH="/usr/x86_64-w64-mingw32/sys-root/mingw/bin:$PATH" 
$ export CFLAGS="-L/usr/x86_64-w64-mingw32/sys-root/mingw/lib -I/usr/x86_64-w64-mingw32/sys-root/mingw/include -lpng -Wl,Bdynamic" 
$ export CXXFLAGS="$CFLAGS" 
$ which libpng-config 
/usr/x86_64-w64-mingw32/sys-root/mingw/bin/libpng-config 
$ ./configure 

EDIT: Ajout du dossier Redist au PATH avant le temps de compilation, qui contient le fichier libpng.dll, est la non importante étape évidente qui s'applique à la fois les environnements Cygwin et MSYS.