[Yaourt] compilation salasaga/libming (erreur)

Annonces, dépannage, évolution du projet yaourt
cariboo
Hankyu
Messages : 43
Inscription : dim. 04 oct. 2009, 12:27
Localisation : Lyon, France

[Yaourt] compilation salasaga/libming (erreur)

Message par cariboo »

Bonjour,

Ayant un gros besoin du logiciel Salasaga, j'ai tenté de l'installer via Yaourt, qui refuse d'installer la dépendance libming, en me retournant une erreur de compilation, que je suis incapable de déchiffrer :

Code : Tout sélectionner

gcc -DHAVE_CONFIG_H -I. -I../src -I../src    -march=i686 -mtune=generic -O2 -pipe -Wall -DSWF_LITTLE_ENDIAN -MT raw2adpcm.o -MD -MP -MF .deps/raw2adpcm.Tpo -c -o raw2adpcm.o raw2adpcm.c
mv -f .deps/raw2adpcm.Tpo .deps/raw2adpcm.Po
/bin/sh ../libtool --tag=CC   --mode=link gcc  -march=i686 -mtune=generic -O2 -pipe -Wall -DSWF_LITTLE_ENDIAN  -Wl,--hash-style=gnu -Wl,--as-needed -o raw2adpcm raw2adpcm.o ../src/libming.la 
gcc -march=i686 -mtune=generic -O2 -pipe -Wall -DSWF_LITTLE_ENDIAN -Wl,--hash-style=gnu -Wl,--as-needed -o .libs/raw2adpcm raw2adpcm.o  ../src/.libs/libming.so 
creating raw2adpcm
gcc -DHAVE_CONFIG_H -I. -I../src -I../src    -march=i686 -mtune=generic -O2 -pipe -Wall -DSWF_LITTLE_ENDIAN -MT listmp3.o -MD -MP -MF .deps/listmp3.Tpo -c -o listmp3.o listmp3.c
mv -f .deps/listmp3.Tpo .deps/listmp3.Po
/bin/sh ../libtool --tag=CC   --mode=link gcc  -march=i686 -mtune=generic -O2 -pipe -Wall -DSWF_LITTLE_ENDIAN  -Wl,--hash-style=gnu -Wl,--as-needed -o listmp3 listmp3.o ../src/libming.la 
gcc -march=i686 -mtune=generic -O2 -pipe -Wall -DSWF_LITTLE_ENDIAN -Wl,--hash-style=gnu -Wl,--as-needed -o .libs/listmp3 listmp3.o  ../src/.libs/libming.so 
creating listmp3
gcc -DHAVE_CONFIG_H -I. -I../src -I../src    -march=i686 -mtune=generic -O2 -pipe -Wall -DSWF_LITTLE_ENDIAN -MT img2swf.o -MD -MP -MF .deps/img2swf.Tpo -c -o img2swf.o img2swf.c
mv -f .deps/img2swf.Tpo .deps/img2swf.Po
/bin/sh ../libtool --tag=CC   --mode=link gcc  -march=i686 -mtune=generic -O2 -pipe -Wall -DSWF_LITTLE_ENDIAN  -Wl,--hash-style=gnu -Wl,--as-needed -o img2swf img2swf.o ../src/libming.la 
gcc -march=i686 -mtune=generic -O2 -pipe -Wall -DSWF_LITTLE_ENDIAN -Wl,--hash-style=gnu -Wl,--as-needed -o .libs/img2swf img2swf.o  ../src/.libs/libming.so 
creating img2swf
gcc -DHAVE_CONFIG_H -I. -I../src -I../src    -march=i686 -mtune=generic -O2 -pipe -Wall -DSWF_LITTLE_ENDIAN -MT png2dbl.o -MD -MP -MF .deps/png2dbl.Tpo -c -o png2dbl.o png2dbl.c
mv -f .deps/png2dbl.Tpo .deps/png2dbl.Po
/bin/sh ../libtool --tag=CC   --mode=link gcc  -march=i686 -mtune=generic -O2 -pipe -Wall -DSWF_LITTLE_ENDIAN  -Wl,--hash-style=gnu -Wl,--as-needed -o png2dbl png2dbl.o ../src/libming.la 
gcc -march=i686 -mtune=generic -O2 -pipe -Wall -DSWF_LITTLE_ENDIAN -Wl,--hash-style=gnu -Wl,--as-needed -o .libs/png2dbl png2dbl.o  ../src/.libs/libming.so 
png2dbl.o: In function `writeDBL':
png2dbl.c:(.text+0x1a4): undefined reference to `floor'
png2dbl.c:(.text+0x1ef): undefined reference to `compress2'
png2dbl.c:(.text+0x394): undefined reference to `floor'
png2dbl.c:(.text+0x3df): undefined reference to `compress2'
png2dbl.o: In function `readPNG':
png2dbl.c:(.text+0x529): undefined reference to `png_create_read_struct'
png2dbl.c:(.text+0x53c): undefined reference to `png_create_info_struct'
png2dbl.c:(.text+0x552): undefined reference to `png_create_info_struct'
png2dbl.c:(.text+0x582): undefined reference to `png_init_io'
png2dbl.c:(.text+0x595): undefined reference to `png_set_sig_bytes'
png2dbl.c:(.text+0x5a7): undefined reference to `png_read_info'
png2dbl.c:(.text+0x5ed): undefined reference to `png_get_IHDR'
png2dbl.c:(.text+0x62b): undefined reference to `png_get_valid'
png2dbl.c:(.text+0x664): undefined reference to `png_read_update_info'
png2dbl.c:(.text+0x6aa): undefined reference to `png_get_IHDR'
png2dbl.c:(.text+0x6bc): undefined reference to `png_get_channels'
png2dbl.c:(.text+0x754): undefined reference to `png_get_rowbytes'
png2dbl.c:(.text+0x79c): undefined reference to `png_read_image'
png2dbl.c:(.text+0x898): undefined reference to `png_set_expand'
png2dbl.c:(.text+0x8bb): undefined reference to `png_set_strip_16'
png2dbl.c:(.text+0x8df): undefined reference to `png_set_gray_to_rgb'
png2dbl.c:(.text+0x914): undefined reference to `png_set_filler'
png2dbl.c:(.text+0x924): undefined reference to `png_set_packing'
png2dbl.c:(.text+0x943): undefined reference to `png_get_valid'
png2dbl.c:(.text+0x9a3): undefined reference to `png_get_PLTE'
png2dbl.c:(.text+0x9c1): undefined reference to `png_destroy_read_struct'
png2dbl.c:(.text+0xa74): undefined reference to `png_destroy_read_struct'
png2dbl.c:(.text+0xaa0): undefined reference to `png_destroy_read_struct'
collect2: ld returned 1 exit status
make[1]: *** [png2dbl] Erreur 1
make[1]: quittant le répertoire « /tmp/yaourt-tmp-root/aur-ming/ming/src/ming-0.4.2/util »
make: *** [all-recursive] Erreur 1
==> ERREUR: La compilation a échoué.
    Abandon...
Error: Makepkg n'a pas pu construire le paquetage ming.


==> Installation ou compilation des dépendances de salasaga:
Du coup, je suis quelque peu dépité...Pas moyen d'installer ce paquet.

Un conseil? :)
Dernière modification par tuxce le mar. 08 déc. 2009, 16:01, modifié 1 fois.
Raison : [code], c'est mieux
"Apporter la lumière c'est pour que tout le monde y voit;si c'est que pour ma gueule je vois pas l'intérêt"
Avatar de l’utilisateur
tuxce
Maître du Kyudo
Messages : 6677
Inscription : mer. 12 sept. 2007, 16:03

Re: [Yaourt] compilation salasaga/libming (erreur)

Message par tuxce »

rajoutes:

Code : Tout sélectionner

LDFLAGS="-lm"
dans le ~/.makepkg.conf et retentes.
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17235
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Yaourt] compilation salasaga/libming (erreur)

Message par benjarobin »

Je ne pense pas que cela suffisse, rien que compress2 est dans zlib.h qui a rien a voir avec la bibliothèque de mathématique. J'espère me tromper. Je regarderai ce soir

Edit: http://bbs.archlinux.org/viewtopic.php?id=82673 On dirai que yaourt provoque des problèmes. Il faudrait tenter de créer un dossier temporaire, puis faire yaourt -G lepaquet, puis makepkg...
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Avatar de l’utilisateur
tuxce
Maître du Kyudo
Messages : 6677
Inscription : mer. 12 sept. 2007, 16:03

Re: [Yaourt] compilation salasaga/libming (erreur)

Message par tuxce »

exact, c'était une erreur de copie/coller, en fait, au départ, en me basant sur floor, j'ai rajouté le -lm, mais après je me suis rappelé que makepkg rajoute des flags qui sont incompatibles avec certains Makefile, il suffit en fait de mettre:

Code : Tout sélectionner

LDFLAGS=""
mais au copie/coller j'ai mis le premier que j'avais écrit :)
cariboo
Hankyu
Messages : 43
Inscription : dim. 04 oct. 2009, 12:27
Localisation : Lyon, France

Re: [Yaourt] compilation salasaga/libming (erreur)

Message par cariboo »

Génial, cela fonctionne :

J'ai enlevé les conditions qui se trouvaient auparavant entre les guillemets dans LDFLAGS, et ai laissé vide, cela a fonctionné.

Peut-on m'expliquer "vulgairement" les raisons de cette manipulation :) ?
"Apporter la lumière c'est pour que tout le monde y voit;si c'est que pour ma gueule je vois pas l'intérêt"
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17235
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Yaourt] compilation salasaga/libming (erreur)

Message par benjarobin »

Cette variable LDFLAGS, sert a indique que doit t'on linker a l'exécutable.
En gros quand tu compiles, tu compiles d'abord les .o, a ce moment la il n'utilise que les prototype des fonctions fournit avec les .h pour générer les .o
Par contre au linkage il va chercher ou sont ces fonctions, ou sont elles implémentées/compilées. Par exemple pour Math.h quand tu utilise la fonction sinus, lorsque il génère les .o il vérifie que la fonction correspondes bien aux paramètres de la fonction. Mais quand tu linkes les .o pour faire l'exécutable il faut fournir a cet exécutable ou est la fonction. Si la librairie math.h a été compile en static, il va prendre tout le code et l'incorporer dans l'exécutable. Si la bibliothèque est compile en share(?) il va juste mettre un lien absolue(?) vers la libraire dans l'exécutable. C'est pour ceci que dans linux on a beaucoup de lien symbolique sur les .so...

Tout ceci pour dire que il faut fournir a gcc ce qu'il peut utiliser comme librairie avec LDFLAGS. Mais ce que je ne sais pas du tout, c'est si on met rien que fait il ?
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Avatar de l’utilisateur
tuxce
Maître du Kyudo
Messages : 6677
Inscription : mer. 12 sept. 2007, 16:03

Re: [Yaourt] compilation salasaga/libming (erreur)

Message par tuxce »

En gros, le "-Wl,--as-needed" demande à "ld", le linker de ne lier à l'executable que les librairies qu'il utilise vraiment, ça permet d'allèger l'exécutable, de rendre le démarrage plus rapide (en temps de microbe :))
là, le Makefile tel qu'il est fait suppose que les librairies liées à libming.so seront liées à png2dbl.o, le as-needed change cela et ça plante.
cariboo
Hankyu
Messages : 43
Inscription : dim. 04 oct. 2009, 12:27
Localisation : Lyon, France

Re: [Yaourt] compilation salasaga/libming (erreur)

Message par cariboo »

Ok, merci bien.

Je passe ce sujet en résolu.

PS : vous êtes des bons les gars ;)
"Apporter la lumière c'est pour que tout le monde y voit;si c'est que pour ma gueule je vois pas l'intérêt"
Répondre