Wie wählt man die GTK-Version für die Eclipse RCP-Anwendung unter Linux?


1

Ich habe eine Eclipse RCP-Anwendung, die ich in einer Linux-Umgebung ausführen möchte, in der mehrere gtks installiert sind.

Gibt es eine Möglichkeit, die GTK-Version auszuwählen, mit der ich die Anwendung ausführen kann?

Linux- Version : openSUSE
Window Manager:
Installierte iceWM gtk + -Versionen: 1.2.10 & 2.2.1

Antworten:


1

Es könnte möglich sein. Sie können die von Ihrem Programm geladenen Shared Libraries mit dem Befehl ldd überprüfen :

  # 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)

Dies zeigt alle von openvpn aufgerufenen Bibliotheken . Die Bibliotheken, deren Name auf .so.N endet, wobei N eine einzelne Ziffer (eine beliebige Ziffer) ist, sind tatsächlich Links zu den realen Bibliotheken. Nehmen Sie als Beispiel 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

Der LDD - Befehl zeigt , wie die geladene Bibliothek, libz.so.1 (btw, das die gemeinsam genutzte Bibliothek soname genannt wird) aufgelöst, und die follwoing Befehle finden die Bibliothek, und zeigen , dass die soname ist eigentlich ein Link auf die gemeinsam genutzte Bibliothek in Echt Name.

Sie können hoffen, zu bestimmen, welche gemeinsam genutzte Bibliothek geladen wird, indem Sie diesen Link ändern.

Es gibt eine Reihe von Einschränkungen, von denen die wichtigste ist, dass Sie im Allgemeinen sicher sind, verschiedene Nebenversionen derselben Hauptversion zu ersetzen (z. B. mit libz.so.1.2.8 anstelle von libz.1.1). 6) ist in Ordnung, während Substitution Versionen in ihrer unterschiedlichen großen Zahl (die erste Zahl nach so ) ist nicht möglich. Nach der tldp.org Seite ,

Programme sollten, wenn sie intern die von ihnen benötigten gemeinsam genutzten Bibliotheken auflisten, nur den von ihnen benötigten Sonamen auflisten.

Dies bedeutet, dass Sie nicht zwei Versionen derselben gemeinsam genutzten Bibliothek ersetzen können, die zu verschiedenen Hauptversionen gehören .

In jedem Fall empfehle ich den obigen Link zur weiteren Klärung.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.