Wir bauen ein Programm unter Linux auf, das in einer bestimmten Ubuntu-Version funktioniert. Aber wir möchten, dass die gleiche Binärdatei unter Ubuntu 10.04 und 11.10 läuft. Es wäre völlig in Ordnung, die Anwendung auf der 10.04-Plattform zu erstellen. Aber wenn ich das tue, habe ich Abhängigkeiten zu bestimmten Bibliotheksversionen (zB libboost_thread.so.1.40.0), die am 11.10 nicht verfügbar sind, weil es neuere Versionen verwendet. Das System wird mit QMake erstellt.
Ich suche nach einem Tutorial oder einem Startpunkt, wie man diese Abhängigkeitskonflikte für mehrere Ubuntu-Plattformen löst.
Wenn niemand sonst Lust hat, dabei zu schwingen, kann ich auch etwas spritzen.
Ich werde ein paar Annahmen machen.
Damit das Ganze ausgeschlossen wird, "lassen Sie die Distro / Benutzer es für ihre Einrichtung selbst bauen".
Wenn ich sehe, wie andere ähnliche Probleme gelöst haben, sehe ich, dass es üblich ist, die shared libraries mit Ihrer Anwendung zu verbinden und dann ein loader / wrapper zu verwenden, ein Skript, das die Umgebung vor dem Start der Anwendung ändert . Insbesondere ändern sie den LD_LIBRARY_PATH so, dass er den Ordner / lib enthält, der in der Anwendung enthalten ist.
Das Skript könnte so einfach sein wie.
%Vor%So habe ich die Verteilung einer Qt4-Anwendung an Benutzer mit Distributionen, die nicht neuer als Qt-3.3.6 sind (2009 ... ernsthaft), gelöst. Edit: Ich könnte auch sagen, dass ich die 5-jährigen Mitarbeiter des Unternehmens, die für die Entwicklung zahlen, meinen, dass sie nicht spezifischere Angaben machen müssen, wenn sie plattformübergreifend auf modernen Betriebssystemen sagen .
Jetzt wird jemand wahrscheinlich ein Dutzend Dinge falsch finden, aber das ist gut, ich kann aktualisieren und lernen, wie wir gehen.
BEARBEITEN: Da JimR gesagt hat, dass dies mit Sicherheits-Implikationen verbunden ist, kann jemand, der Ihren libs-Ordner schreibbar belässt, damit Schadcode in Ihre Anwendung injizieren. Je nachdem, wie Sie die Bereitstellung planen, ist dies möglicherweise ein echtes Problem, aber Sie sollten sich dessen bewusst sein.