# [GTK/Cairo]Probleme compilation de programmes Gnome

## cloud64

Bonjour,

Quand j'essai de compiler des programmes gnome, par exemple libgnomeprintui j'obtiens l'erreur suivante :

```

i686-pc-linux-gnu-gcc -O2 -march=athlon-xp -fomit-frame-pointer -pipe -Wall -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-sign-compare -DGDK_MULTIHEAD_SAFE -o .libs/libgnomeprintui-scan .libs/libgnomeprintui-scan.o  ../libgnomeprintui/.libs/libgnomeprintui-2-2.so 

/usr/lib/libgtk-x11-2.0.so.0: undefined reference to `cairo_surface_set_fallback_resolution'

collect2: ld returned 1 exit status

Linking of scanner failed: 

make[2]: *** [scan-build.stamp] Error 1
```

J'ai recompiler gtk+ et cairo sans succes. Un revdep-rebuild donne la meme erreur.

Version de cairo :

```
 Installed:           1.3.12(13:35:22 19.02.2007)(X -debug -directfb doc glitz svg -xcb)
```

Version de gtk+

```
Installed:            2.10.9(2)(14:27:50 19.02.2007)(X -debug doc jpeg tiff -xinerama)
```

Merci pour votre aide.Last edited by cloud64 on Mon Feb 19, 2007 10:34 pm; edited 1 time in total

----------

## cloud64

J'ai remis cairo en stable et gtk+ aussi et j'ai toujours la meme erreur ...

```

gtk-doc: Linking scanner

i686-pc-linux-gnu-gcc -O2 -march=athlon-xp -fomit-frame-pointer -pipe -Wall -Wmi

ssing-prototypes -Wnested-externs -Wpointer-arith -Wno-sign-compare -DGDK_MULTIH

EAD_SAFE -o .libs/libgnomeprintui-scan .libs/libgnomeprintui-scan.o  ../libgnome

printui/.libs/libgnomeprintui-2-2.so

/usr/lib/libgtk-x11-2.0.so.0: undefined reference to `cairo_surface_set_fallback

_resolution'

collect2: ld returned 1 exit status

Linking of scanner failed:

make[2]: *** [scan-build.stamp] Error 1

make[2]: Leaving directory `/var/tmp/portage/gnome-base/libgnomeprintui-2.12.1/w

ork/libgnomeprintui-2.12.1/doc'
```

Y a vraiment personne qui a une idée ?  :Sad: 

----------

## YetiBarBar

Bonsoir,

1°/ Pourrais tu mettre ton titre en conformité avec nos conventions (du type [GTK] Problème de compilation )

2°/ Pour ton suci particulier, je ne peux malheureusement pas t'aider vu que je n'utilise pas gtk mais tu peux toujours tenter de réémerger cairo, pango puis gtk (dans cet ordre)

Bonne chance ...

----------

## cloud64

Deja tenté sans succès... Merci quand meme.

----------

## DuF

Comme te l'as dit YetiBarBar, merci de mettre ton titre en conformité.

Pour ton problème, recompiler GTK+ était une bonne idée, a priori pas suffisant.

Pourrais-tu nous indiquer quels useflags tu as sur les paquets GTK+ et Cairo ?

En fait le problème est très certainement lié à Cairo et à une cohérence de version entre GTK+ et Cairo.

Chez moi j'ai la même version de GTK+, mais la version 1.3.14 de Cairo, tu peux toujours essayer.

----------

## cloud64

Je viens de tester et j'ai toujours le meme probleme  :Sad:  Cairo est maintenant en 1.3.14

Pour les flags

```
x11-libs/cairo-1.3.14  USE="X doc glitz svg -debug -directfb -xcb"

x11-libs/gtk+-2.10.6  USE="X doc jpeg tiff -debug -xinerama"

```

----------

## DuF

Si on compare avec ce que j'ai : 

```
[ebuild   R   ] x11-libs/gtk+-2.10.9  USE="X jpeg -debug -doc -tiff -xinerama" 0 kB 

[ebuild   R   ] x11-libs/cairo-1.3.14  USE="X glitz svg -debug -directfb -doc -xcb" 0 kB 

```

On en conclut pas grand chose (à part le -doc et -tiff)...

Mais bon, il semble que le problème ne soit pas là et qu'il faille approfondir sur l'erreur :/usr/lib/libgtk-x11-2.0.so.0: undefined reference to `cairo_surface_set_fallback

_resolution' 

EDIT : Je viens de voir que la version de GTK+ ne colle pas avec moi, il faudrait que tu t'assures d'être en 2.10.9 pour GTK+ et en 1.3.14 pour Cairo, ou alors en 2.10.6 pour GTK+ et en 1.3.12 pour Cairo.

----------

## cloud64

Personne n'a rencontré le meme probleme ?  :Sad:  A chaque compile de programme utilisant GTK j'ai ce probleme  :Sad: 

----------

## pathfinder

tu es en gtk 2.6.9 ou 2.6.10?

je n ai pas ENCORE rencontré ce problème, mais gtk cairo pago m ont pas mal pris la tête avant.

je sais pas aider.

revérifie tes versions..

et montre ton /etc/package.keywords pour voir comment ca se passe dans ton fichier...?  je sais pas

desole, comme tu peux voir, je suis un peu a la bourre niveau actu.

 *Quote:*   

> [ebuild     U ] x11-libs/pango-1.14.9 [1.14.7] USE="-debug -doc" 1,263 kB
> 
> [ebuild   R   ] x11-libs/gtk+-2.10.6  USE="X jpeg xinerama -debug -doc -tiff" 0 kB
> 
> [ebuild     U ] x11-libs/cairo-1.2.6 [1.2.4] USE="X glitz -debug% -directfb -doc -svg (-pdf%*) (-png%*)" 2,904 kB

 

mais ca marche impecc comme ca chez moi. 1.2.4 de cairo et 2.10.6 de gtk

il est pas en keywords chez moi

aucun ne l est en realite.

----------

## cloud64

J'ai tout mis en stable donc j'ai la meme config que toi avec le .doc juste qui differe mais bon ca n'a pas de rapport.

Je me tate a faire un emerge -e mais bon je trouve ca bourrin pour juste réparer ca ...

----------

## Alexis

tu peux montrer ton emerge --info pour voir ?

----------

## cloud64

Voila mon emerge --info :

```

Portage 2.1.2-r9 (default-linux/x86/2006.0, gcc-4.1.1, glibc-2.5-r0, 2.6.19-gentoo-r5 i686)

=================================================================

System uname: 2.6.19-gentoo-r5 i686 AMD Athlon(tm) XP 2600+

Gentoo Base System release 1.12.9

Timestamp of tree: Sun, 04 Mar 2007 16:00:01 +0000

dev-java/java-config: 1.3.7, 2.0.31-r3

dev-lang/python:     2.3.5-r3, 2.4.3-r4

dev-python/pycrypto: 2.0.1-r5

sys-apps/sandbox:    1.2.17

sys-devel/autoconf:  2.13, 2.61

sys-devel/automake:  1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6-r2, 1.10

sys-devel/binutils:  2.16.1-r3

sys-devel/gcc-config: 1.3.14

sys-devel/libtool:   1.5.22

virtual/os-headers:  2.6.17-r2

ACCEPT_KEYWORDS="x86"

AUTOCLEAN="yes"

CBUILD="i686-pc-linux-gnu"

CFLAGS="-O2 -march=athlon-xp -fomit-frame-pointer -pipe"

CHOST="i686-pc-linux-gnu"

CONFIG_PROTECT="/etc /opt/openjms/config /usr/kde/3.3/env /usr/kde/3.3/share/config /usr/kde/3.3/shutdown /usr/kde/3.4/env /usr/kde/3.4/share/config /usr/kde/3.4/shutdown /usr/kde/3.5/env /usr/kde/3.5/share/config /usr/kde/3.5/shutdown /usr/lib/mozilla/defaults/pref /usr/share/X11/xkb /usr/share/config"

CONFIG_PROTECT_MASK="/etc/env.d /etc/env.d/java/ /etc/gconf /etc/java-config/vms/ /etc/terminfo /etc/texmf/web2c"

CXXFLAGS="-O2 -march=athlon-xp -fomit-frame-pointer -pipe"

DISTDIR="/usr/portage/distfiles"

FEATURES="autoconfig distlocks metadata-transfer sandbox sfperms strict"

GENTOO_MIRRORS="http://ftp.club-internet.fr/pub/mirrors/gentoo http://pandemonium.tiscali.de/pub/gentoo/ ftp://pandemonium.tiscali.de/pub/gentoo/ http://85.25.128.62 http://212.219.56.133/sites/www.ibiblio.org/gentoo/"

LANG="fr_FR@euro"

LC_ALL="fr_FR@euro"

MAKEOPTS="-j2"

PKGDIR="/usr/portage/packages"

PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --delete-after --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"

PORTAGE_TMPDIR="/var/tmp"

PORTDIR="/usr/portage"

PORTDIR_OVERLAY="/usr/local/xgl-coffee"

SYNC="rsync://rsync.gentoo.org/gentoo-portage"

USE="3dnow X acl aim aimextras alsa apache2 apm arts async authdaemond bash-completion bitmap-fonts bzip2 cairo cap cdda cdparanoia cgi chroot cli cpudetection cracklib crypt css cups cyrus dba dbus devfs26 dnd doc dri dvb dvd dvdread eds emboss encode escreen esd exif fbcon finger firefox fmod font-server fontconfig foomaticdb force-cgi-redirect fortran gd-external gdbm gif gimp gkrellm glitz glx gmail gnome gphoto2 gpm gstreamer gtk gtk2 gzip hal http httpd icecast iconv idled imap imlib inode irda isdnlog j2ee jabber java javascript jms jpeg kde libg++ libgd libwww lm_sensors mad maildir midi mikmod mmx motif mozcalendar mozilla moznocompose moznoirc moznomail mp3 mpeg mplayer mpm-worker msn mysql ncurses net nforce2 nls nptl nptlonly nvidia ogg opengl openssh openssl oss pam password pcre pdf perl png pop postfix pppd python qt3 qt4 rar rdesktop readline reflection sample sasl screen sdl session sftp spamassassin spell spl sql ssl subtitles tcpd threads tiff truetype truetype-fonts type1-fonts unicode usb v4l v4l2 vim vim-with-x vorbis win32codecs x86 xanim xml xorg xscreensaver xv xvid zip zlib zvbi" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1 emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mulaw multi null plug rate route share shm softvol" ELIBC="glibc" INPUT_DEVICES="keyboard mouse evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" USERLAND="GNU" VIDEO_CARDS="none"

Unset:  CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LDFLAGS, LINGUAS, PORTAGE_RSYNC_EXTRA_OPTS

```

 :Very Happy: 

----------

## Mickael

Bon et bien la mise à jour de python devrait régler ton problème :

```
python-updater
```

EDIT : l'avertissement donné par l'ebuild à la fin de la compilation de python : 

 *Quote:*   

> ewarn "If you have just upgraded from an older version of python you"
> 
>         ewarn "will need to run:"
> 
>         ewarn
> ...

 

EDIT 2 : vire le triplet cairo/gtk+/pango et réinstalle les.

EDIT 3 : ainso que pygtk, pycairo,

----------

## cloud64

Je viens d'essayer et j'ai toujours la meme erreur en testant par exemple sur GIMP :

```
i686-pc-linux-gnu-gcc -O2 -march=athlon-xp -fomit-frame-pointer -pipe -fomit-frame-pointer -Wall -o .libs/gradmap gradmap.o  ../../libgimp/.libs/libgimpui-2.0.so ../../libgimpwidgets/.libs/libgimpwidgets-2.0.so ../../libgimp/.libs/libgimp-2.0.so ../../libgimpcolor/.libs/libgimpcolor-2.0.so ../../libgimpbase/.libs/libgimpbase-2.0.so /usr/lib/libgobject-2.0.so /usr/lib/libglib-2.0.so

/usr/lib/libgtk-x11-2.0.so.0: undefined reference to `cairo_surface_set_fallback_resolution'

collect2: ld returned 1 exit status

make[3]: *** [gradmap] Error 1
```

----------

## netfab

Salut,

Essaye : 

```

# emerge -1 glib && emerge gimp

```

----------

## cloud64

Je viens d'essayé et le résultat est le meme...

Merci pour votre patience  :Very Happy: 

----------

## Alexis

equery belongs /usr/lib/libgtk-x11-2.0.so.0 

ca te dit bien que c'est gtk+-2.0 le propriétaire au moins ? 

et ls -l  /usr/lib/libgtk-x11-2.0.so.0 ca te dit quoi ?

----------

## cloud64

Alors j'obtiens donc :

```
 equery belongs /usr/lib/libgtk-x11-2.0.so.0 

[ Searching for file(s) /usr/lib/libgtk-x11-2.0.so.0 in *... ]

x11-libs/gtk+-2.10.6 (/usr/lib/libgtk-x11-2.0.so.0 -> libgtk-x11-2.0.so.0.1000.6)
```

et

```
ls -l /usr/lib/libgtk-x11-2.0.so.0

lrwxrwxrwx 1 root root 26 fév 28 01:03 /usr/lib/libgtk-x11-2.0.so.0 -> libgtk-x11-2.0.so.0.1000.9
```

Comment cela se fait que le résultat ne pointe pas vers le meme lien ? C'est normal ?

Avec un ls de /usr/lib j'obtiens :

```
ls -l /usr/lib/ | grep libgtk-x11-2.0.so.0

lrwxrwxrwx   1 root root       26 fév 28 01:02 libgtk-x11-2.0.so -> libgtk-x11-2.0.so.0.1000.6

lrwxrwxrwx   1 root root       26 fév 28 01:03 libgtk-x11-2.0.so.0 -> libgtk-x11-2.0.so.0.1000.9

-rwxr-xr-x   1 root root  3492820 fév 28 01:02 libgtk-x11-2.0.so.0.1000.6

-rwxr-xr-x   1 root root  3469388 fév 22 01:22 libgtk-x11-2.0.so.0.1000.9

-rwxr-xr-x   1 root root  3498932 fév 22 01:04 libgtk-x11-2.0.so.0.old
```

----------

## cloud64

Bon j'ai modifié les liens. J'ai tenté :

```
ls -l /usr/lib/ | grep libgtk-x11-2.0.so.0

lrwxrwxrwx   1 root root       26 mar  6 14:40 libgtk-x11-2.0.so -> libgtk-x11-2.0.so.0.1000.9

lrwxrwxrwx   1 root root       26 fév 28 01:03 libgtk-x11-2.0.so.0 -> libgtk-x11-2.0.so.0.1000.9

-rwxr-xr-x   1 root root  3492820 fév 28 01:02 libgtk-x11-2.0.so.0.1000.6

-rwxr-xr-x   1 root root  3469388 fév 22 01:22 libgtk-x11-2.0.so.0.1000.9

-rwxr-xr-x   1 root root  3498932 fév 22 01:04 libgtk-x11-2.0.so.0.old
```

Planté pareil

Puis :

```
ls -l /usr/lib/ | grep libgtk-x11-2.0.so.0

lrwxrwxrwx   1 root root       26 mar  6 14:43 libgtk-x11-2.0.so -> libgtk-x11-2.0.so.0.1000.6

lrwxrwxrwx   1 root root       26 mar  6 14:43 libgtk-x11-2.0.so.0 -> libgtk-x11-2.0.so.0.1000.6

-rwxr-xr-x   1 root root  3492820 fév 28 01:02 libgtk-x11-2.0.so.0.1000.6

-rwxr-xr-x   1 root root  3469388 fév 22 01:22 libgtk-x11-2.0.so.0.1000.9

-rwxr-xr-x   1 root root  3498932 fév 22 01:04 libgtk-x11-2.0.so.0.old
```

Meme résultat  :Sad: 

----------

## Alexis

Non spas normal que ca soit pas les memes, en gros t'as deux libs là, gtk 2.10.6 et gtk 2.10.9.

Ton programme cherche probablment à linker avec la mauvaise, qui est pas gérée par portage.

Tu l'as installée comment ta lib ? T'utilises quel package manager ? T'utiliserais pas le prelink par hasard ?

Enfin, au pire je pense que tu peux virer ces libgtk-x11 à la mano, reinstaller gtk et faire un revdep-rebuild.

----------

## cloud64

Oui j'ai prelink. J'ai installer cela en emerge normal.

La j'ai lancé symlinks -drv / puis je vais virer ces libs et reinstaller GTK+ voir ce que cela donne.

Je te tiens au courant, Merci  :Wink: 

----------

## Alexis

voila la réponse à ta question donc  :Wink: 

 *Quote:*   

> 
> 
> Si une application prelinkée voit une de ses bibliothèques modifiée (mise à jour), alors il faut relancer prelink sur l'application, dans le cas contraire vous n'obtiendrez aucune amélioration de vitesse. En fait, à chaque fois que vous mettez à jour via Portage un paquet qui met à jour des bibliothèques, vous devez relancer prelink sur ces bibliothèques.
> 
> Les modifications effectuées sur le binaire sont complètement réversibles. Prelink a une fonction d'annulation.
> ...

 

note aussi que prelink modifie tes fichiers, donc le mtime, donc portage ne va pas te les virer à la mise à jour puisqu'il va croire qu'elles viennent d'être installées; c'est probablement ce qui t'est arrivé. Je sais pas comment portage gère ça (le dernier point du quote) mais visiblement ça a foiré pour toi  :Wink: 

----------

## cloud64

GTK+ est en pleine compilation mais je test de reprelinker tout ca des qu'il a fini. 

Je croise les doigts, Merci  :Very Happy: 

----------

## cloud64

Bon j'ai toujours le meme probleme malgré tout ca mais quand je compile GTK+ j'ai pas mal de warning de link qui sont absent donc j'ai peut etre un probleme par la, pourtant j'ai re prelink ...

----------

## cloud64

Bon par désespoir et vu que j'ai chanég de version de GCC, je emerge -e system && emerge -e world et je verrai bien le résultat ...

----------

## Alexis

J'ai ca moi : 

 *Quote:*   

> 
> 
> -rw-r--r-- 1 root root  830 jan 25 21:11 /usr/lib64/libgtk-x11-2.0.la
> 
> lrwxrwxrwx 1 root root   26 jan 25 21:11 /usr/lib64/libgtk-x11-2.0.so -> libgtk-x11-2.0.so.0.1000.9
> ...

 

toi t'as le 1000.9 et le 1000.6, gtk 2.10.9 et gtk 2.10.6 respectivement.

un des deux est passé hors du controle de portage à cause du prelink. Comme je connais pas prelink, je peux pas trop t'aider là.

Mais emerge -e world va pas résoudre grand chose à mon avis, les fichiers qui foutent le bordel seront pas plus remplacés.

Essaye plutot emerge -C gtk+ et regarde les fichiers qui restent parmis ceux ci, et vire les à la main. C'est goret comme méthode mais je vois pas mieux.

----------

## kernelsensei

Tu peux faire un quickpkg de tes version gtk+ installées avant le emerge -aC, comme ça apres t'as pas besoin de les recompiler, tu fais simplement un emerge -k ...

----------

## cloud64

J'ai deja lancé le -e mais j'avais deja test de quickpkg, de suppr GTK+ et de reinstaller mais ca n'avait rien changé ... J'retesterai une fois le -e fini pis de toute maniere j'ai changé de GCC dans la foulée donc c'était nécessaire pis je vais bien voir ... J'ai auparavant virer tous les prelink avec un prelink -au

J'vous tiens au jus, Merci  :Very Happy: 

----------

