Comment choisir la version de gtk pour l'application Eclipse RCP sous Linux?

1

J'ai une application Eclipse RCP que je veux exécuter dans un environnement Linux sur lequel plusieurs gtks sont installés.

Existe-t-il un moyen de choisir la version de gtk par rapport à laquelle je peux exécuter l'application?


Version Linux: Gestionnaire de fenêtres openSUSE : Versions de iceWM
gtk + installées: 1.2.10 & 2.2.1

Gerin
la source

Réponses:

1

C'est peut-être possible. Vous pouvez vérifier les bibliothèques partagées chargées par votre programme avec la commande ldd : par exemple,

  # ldd /usr/sbin/openvpn
    linux-vdso.so.1 =>  (0x00007ffffb5fe000)
    liblzo2.so.2 => /lib/x86_64-linux-gnu/liblzo2.so.2 (0x00007fc3dc936000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fc3dc719000)
    libpkcs11-helper.so.1 => /usr/lib/x86_64-linux-gnu/libpkcs11-helper.so.1 (0x00007fc3dc4ff000)
    libssl.so.1.0.0 => /lib/x86_64-linux-gnu/libssl.so.1.0.0 (0x00007fc3dc2a1000)
    libcrypto.so.1.0.0 => /lib/x86_64-linux-gnu/libcrypto.so.1.0.0 (0x00007fc3dbec5000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fc3dbcc0000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fc3db8f8000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fc3dce22000)
    libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fc3db6df000)

cela montre toutes les bibliothèques appelées par openvpn . Les bibliothèques dont le nom se termine par .so.N,N est un chiffre (tout chiffre) sont en fait des liens vers les bibliothèques réelles. Prenez par exemple libz.so.1 :

 root@rasal:/lib/x86_64-linux-gnu# find / -type f -name 'libz.so.1*' -print
 /lib/x86_64-linux-gnu/libz.so.1.2.8
 /lib/i386-linux-gnu/libz.so.1.2.8

 root@rasal:/lib/x86_64-linux-gnu# ls /lib/x86_64-linux-gnu/libz.so.*
 /lib/x86_64-linux-gnu/libz.so.1  /lib/x86_64-linux-gnu/libz.so.1.2.8

 root@rasal:/lib/x86_64-linux-gnu# file /lib/x86_64-linux-gnu/libz.so.*
 /lib/x86_64-linux-gnu/libz.so.1:     symbolic link to `libz.so.1.2.8'
 /lib/x86_64-linux-gnu/libz.so.1.2.8: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=0x42bce97e9a0f7a78fcdb3b79d11f67b02abc522c, stripped

La commande ldd montre ce que résout la bibliothèque chargée, libz.so.1 (btw, elle s'appelle soname), et les commandes suivantes trouvent la bibliothèque et montrent que le soname est en réalité un lien vers la bibliothèque réelle Nom.

Vous pouvez espérer déterminer quelle bibliothèque partagée est chargée en modifiant ce lien.

Il y a un certain nombre de mises en garde à cet égard, le plus important étant que, bien que vous puissiez généralement remplacer différentes versions mineures de la même version majeure (par exemple, utilisez libz.so.1.2.8 au lieu de libz.1.1. 6) est très bien, tandis que les versions diffèrent par leur substitution grand nombre (le premier numéro suivant donc ) est impossible. Selon la page tldp.org ,

Les programmes, lorsqu'ils répertorient en interne les bibliothèques partagées dont ils ont besoin, ne doivent répertorier que le nom dont ils ont besoin.

Cela implique que vous ne pourrez pas remplacer deux versions de la même bibliothèque partagée appartenant à des versions principales différentes .

Dans tous les cas, je suggère le lien ci-dessus pour plus de précisions.

MariusMatutiae
la source