Le make de pngnq se plante

Résolu/Fermé
XP15EF Messages postés 15 Date d'inscription samedi 15 décembre 2012 Statut Membre Dernière intervention 31 juillet 2022 - 16 déc. 2012 à 10:12
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 18 déc. 2012 à 21:01
Bonjour,

J'essaie d'installer pngnq-1.1 sous Cygwin (Win7).
Le ./configure se passe sans problème, à part un "no" sans conséquence apparente pour valgrind qui n'accepte pas cygwin.

Mais le make se plante avec :

$ make
Making all in src
make[1] : on entre dans le répertoire « /home/xxxx/downloads/pngnq-1.1/src »
make all-am
make[2] : on entre dans le répertoire « /home/xxxx/downloads/pngnq-1.1/src »
gcc -DHAVE_CONFIG_H -I. 'libpng-config --I_opts' -Wall --pedantic -std=gnu99 -g -O2 -MT rwpng.o -MD -MP -MF .deps/rwpng.Tpo -c -o rwpng.o rwpng.c
rwpng.c: In function `rwpng_version_info':
rwpng.c:52:7: erreur: `ZLIB_VERSION' undeclared (first use in this function)
rwpng.c:52:7: note: each undeclared identifier is reported only once for each function it appears in
rwpng.c:52:21: erreur: `zlib_version' undeclared (first use in this function)
rwpng.c: In function `rwpng_read_image':
rwpng.c:133:7: attention : passing argument 3 of `png_get_IHDR' from incompatible pointer type
/usr/include/libpng15/png.h:2164:1: note: expected `png_uint_32 *' but argument is of type `ulg *'
rwpng.c:133:7: attention : passing argument 4 of `png_get_IHDR' from incompatible pointer type
/usr/include/libpng15/png.h:2164:1: note: expected `png_uint_32 *' but argument is of type `ulg *'
rwpng.c: In function `rwpng_write_image_init':
rwpng.c:310:40: erreur: `Z_BEST_COMPRESSION' undeclared (first use in this function)
Makefile:273: recipe for target 'rwpng.o' failed
make[2]: *** [rwpng.o] Error 1


Les problèmes de make me laissent toujours perplexe. Je ne sais pas ce qui peut faire foirer un make et je ne sais pas quoi faire pour résoudre ce problème.
Merci de m'aider.


Mesage rédigé sous opensuse-12.1.
A voir également:

11 réponses

mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
16 déc. 2012 à 13:49
Pour commencer j'aime beaucoup le titre du message (qui peut se lire "le mec de **** se plante").

À mon avis le make plante parce que tu n'as pas au préalable lancé "./configure" qui t'aurait dit d'emblée qu'il te manquait zlib pour compiler. On retrouve que cette librairie est manquante au travers des messages d'erreur que tu observs.

Pour corriger le problème, tu dois installer le paquet qui fournit zlib.h (ce paquet s'appelle zlib1g-dev sous debian et distributions affiliées, sous cygwin je pense qu'il doit s'appeler zlib-devel). Une fois ce paquet installé, commence à compiler :

./configure
make


Bonne chance
0
XP15EF Messages postés 15 Date d'inscription samedi 15 décembre 2012 Statut Membre Dernière intervention 31 juillet 2022
16 déc. 2012 à 15:09
Non, j'ai précisé dans mon message que le ./configure se passe sans problème. D'ailleurs, je viens de vérifier que zlib-devel est bien présent dans mon cygwin.
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
17 déc. 2012 à 00:21
Et tu as toujours la même erreur ? Parce que normalement si ce paquet est bien installé j'imagine que tu as un fichier /usr/include/zlib.h dans lequel est déclaré notamment la constante ZLIB_VERSION...

Bonne chance
0
XP15EF Messages postés 15 Date d'inscription samedi 15 décembre 2012 Statut Membre Dernière intervention 31 juillet 2022
17 déc. 2012 à 08:12
Oui, j'ai bien /usr/include/zlib.h.
J'ai ouvert ce fichier dans Notepad++. Il contient la ligne
#include ZLIB_VERSION "1.2.7"

Mais voici mon "configure":
$ ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
./configure: line 2676: -Wall: command not found
checking for libpng-config... 1
checking for style of include used by make... GNU
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.exe
checking for suffix of executables... .exe
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking dependency style of gcc... gcc3
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking ctype.h usability... yes
checking ctype.h presence... yes
checking for ctype.h... yes
checking for sys/stat.h... (cached) yes
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking valgrind/callgrind.h usability... no
checking valgrind/callgrind.h presence... no
checking for valgrind/callgrind.h... no
checking fcntl.h usability... yes
checking fcntl.h presence... yes
checking for fcntl.h... yes
checking for unistd.h... (cached) yes
checking for stdlib.h... (cached) yes
checking for gcc... (cached) gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking for gcc option to accept ISO C89... (cached) none needed
checking dependency style of gcc... (cached) gcc3
checking for an ANSI C-conforming const... yes
checking for stdlib.h... (cached) yes
checking for GNU libc compatible malloc... yes
checking whether lstat correctly handles trailing slash... yes
checking whether stat accepts an empty string... no
checking for stdbool.h that conforms to C99... yes
checking for _Bool... yes
checking for library containing zlibVersion... -lz
checking for library containing sqrt... none required
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for PNG... yes
checking for getopt... yes
checking for floor... yes
checking for memmove... yes
checking for memset... yes
checking for pow... yes
checking for sqrt... yes
checking for strchr... yes
checking for strrchr... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/Makefile
config.status: creating freegetopt/Makefile
config.status: creating src/config.h
config.status: src/config.h is unchanged
config.status: executing depfiles commands


Dans la ligne
checking for library containing zlibVersion... -lz
que signifie "-lz" n fin de ligne; pourquoi pas le chemin vers la bibliothèque ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
17 déc. 2012 à 09:39
Dans gcc, l'option "-ltoto" signifie que le compilateur doit linker avec libtoto.so. En l'occurrence c'est libz.so qui nous intéresse, d'où l'option "-lz". Je me demande si ton gcc est correctement installé car je vois aussi plus haut qu'il ne comprend pas l'option "-Wall", qui sert à afficher tous les warnings.

Pour être honnête, je pense qu'il serait beaucoup plus simple d'installer un linux par exemple dans virtualbox plutôt que d'utiliser cygwin... Après tu fais comme tu veux.

Bonne chance
0
XP15EF Messages postés 15 Date d'inscription samedi 15 décembre 2012 Statut Membre Dernière intervention 31 juillet 2022
17 déc. 2012 à 15:04
Je suis linuxien presque exclusif de longue date et tu prêches un convaincu.
Ce n'est que récemment que j'ai installé Win7 pour profiter de la baisse de prix qui accompagne la sortie de Win8 : je dois expliquer à des utilisateurs Windows comment participer à des projets de traduction sous Git (les projets GNOME fonctionnent sous Linux).
D'autre part, en tant que traducteur, j'ai souvent à installer des versions en développement, et il m'arrive d'avoir, avec certain d'entre elles, des problèmes de make que je n'ai jamais su résoudre.
Alors, si je pouvais résoudre celui-ci...!

Je vais voir libz.so et gcc.
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
17 déc. 2012 à 20:08
Là de toute façon je pense que c'est un problème au niveau du ".h" car il te manque des constantes, donc à mon avis il ne contient pas ce qu'il faut...

Par exemple sous debian, voici le début de /usr/include/zlib.h :

#ifndef ZLIB_H
#define ZLIB_H

#include "zconf.h"

#ifdef __cplusplus
extern "C" {
#endif

#define ZLIB_VERSION "1.2.7"
#define ZLIB_VERNUM 0x1270
#define ZLIB_VER_MAJOR 1
#define ZLIB_VER_MINOR 2
#define ZLIB_VER_REVISION 7
#define ZLIB_VER_SUBREVISION 0
[...]


Comme tu peux le voir la constante ZLIB_VERSION est bien défini donc le header est cohérent avec ce que le compilateur s'attend à trouver dans le code que tu compiles. Et à mon avis ce n'est pas ton cas.

Ensuite pour l'histoire de prêcher un convaincu, tant mieux :-) La solution que je te propose (virtualiser linux) a le mérite de ne pas nécessiter l'installation d'un dual-boot. Après si l'idée c'est de compiler un exécutable windows, effectivement cygwin est peut-être plus adapté.

Bonne chance
0
XP15EF Messages postés 15 Date d'inscription samedi 15 décembre 2012 Statut Membre Dernière intervention 31 juillet 2022
17 déc. 2012 à 21:58
Eh bien si malheureusement c'est mon cas. Dans cygwin, il y a /usr/include/zlib.h avec exactement ce que tu m'indiques.

J'ai essayé d'installer zlib dans cygwin/opt pour voir. Le configure m'a signalé "No shared library support Building static library libz.a version 1.2.7 with gcc", alors que la même installation sous opensuse dit
"Searching for shared library support..."
"Building shared library libz.so-1.2.7 with gcc"

Si cela peut être une indication...
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
18 déc. 2012 à 10:05
Bah ce n'est pas choquant qu'il construise le .so ou le .a s'il ne le trouve pas, je ne vois pas où est le problème...
0
XP15EF Messages postés 15 Date d'inscription samedi 15 décembre 2012 Statut Membre Dernière intervention 31 juillet 2022
18 déc. 2012 à 18:19
Si la "library" est "static" au lieu d'être "shared, le configure de pngnq ne la trouve pas, non ?

pngnq ne fait pas partie de la base de logiciels de Cygwin, alors que pngcrash si. Il est probable que l'installation de pngnq sous Cygwin n'est pas possible.

Je laisse tomber.

Merci pour l'intérêt porté à mon problème
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
18 déc. 2012 à 21:01
Si la "library" est "static" au lieu d'être "shared, le configure de pngnq ne la trouve pas, non ?

Je ne vois pas le rapport. Même si effectivement il serait logique que le programme soit linké avec le .so.

pngnq ne fait pas partie de la base de logiciels de Cygwin, alors que pngcrash si. Il est probable que l'installation de pngnq sous Cygwin n'est pas possible.

C'est surtout que les paquets cygwin sont souvent à mon goût vieillot et la compilation n'est pas aussi simple que sous un vrai linux. C'est pour ça que je t'avais suggéré de virtualiser un linux par exemple dans virtualbox...

Je laisse tomber. Merci pour l'intérêt porté à mon problème

Pas de souci, bonne continuation !
0