2016-04-28 9 views
0

Ich habe folgendes Problem:Glibc - Gebäude statisch mit Qt Creator oder ein Programm zu zwingen richtige Version zu verwenden

Mit Qt Creator, ich habe eine Qt-Anwendung gemacht habe, die Glibc_2.14 erfordert zu laufen. Ich muss diese Anwendung jetzt auf einem Computer ausführen, der nur Glibc_2.11.3 bereitstellt. Ich habe keine Root-Rechte auf dem Computer, daher kann ich die Bibliothek nicht aktualisieren.

Wenn ich versuche, die Anwendung auszuführen, habe ich die folgende Fehlermeldung natürlich erhalten: /lib/libc.so.6: version 'GLIBC_2.14' not found (required by ./obsluha)

Ich dachte mit Glibc die Qt-Anwendung zu verknüpfen statisch, aber wie soll ich tun dies in Qt Creator? Beachten Sie, dass ich nur statisch mit Glibc und nicht mit Qt selbst verknüpfen muss.

Eine andere Möglichkeit wäre, einfach meine Arbeitskopie von libc.so.6 auf die Maschine zu kopieren und die Anwendung irgendwie zu zwingen, diese Version zu benutzen (ich weiß, das ist keine sehr gute Idee). Dies wird in mein Home-Verzeichnis kopiert, und mein Home-Verzeichnis, das in den LD_LIBRARY_PATH exportiert wurde, erzeugt natürlich Kollisionen mit der anderen libc-Version.

Jede Rückmeldung wäre willkommen, sei es eine Lösung einer der beiden vorgeschlagenen Methoden oder eine andere Methode insgesamt.

Antwort

0

Ich dachte an die Verknüpfung der Qt-Anwendung mit Glibc statisch

Sie es nicht tun: entgegen der landläufigen Meinung, voll statische Binärdateien sind weniger portable when using GLIBC, nicht mehr. Wenn Sie die Binärdatei vollständig statisch verknüpfen, erhalten Sie wahrscheinlich eine Warnung zur Verbindungszeit: warning: Using 'getpwent' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking. Es ist auch sehr wahrscheinlich, dass Ihre Binärdatei abstürzt, wenn Sie diese Warnung ignorieren.

aber wie mache ich das in Qt Creator?

Entschuldigung, ich kenne die Antwort darauf nicht. Aber es ist strittig.

Beachten Sie, dass ich nur statisch mit Glibc und nicht Qt selbst verknüpfen muss.

Es ist unmöglich Link GLIBC statisch, während andere Bibliotheken dynamisch verknüpfen. Die Verwendung dynamischer Bibliotheken impliziert, dass Sie dynamisches Ladeprogramm verwenden, und dass bedeutet, dass Sie dynamisch gegen GLIBC verknüpfen.

Was können Sie also tun? Einige der möglichen Lösungen sind aufgeführt here.