Wie verknüpfe Sie auf eine bestimmte Version einer gemeinsam genutzten Bibliothek in GCC

StackOverflow https://stackoverflow.com/questions/828053

  •  06-07-2019
  •  | 
  •  

Frage

Ich bin kompilieren einige Code, die libcurl auf einem Debian-Linux-System verwendet. Meine dev Maschine läuft Debian 5, aber ich möchte das binäre auch auf älteren Debian-4-Systeme nutzbar sein.

Ich finde, dass, wenn ich angeben -lcurl es wird libcurl.so.4 Link aber Debian-4-Systeme nur libcurl.so.3 haben

Gibt es irgendeine Weise, die ich GCC sagen kann entweder libcurl.so.3 zu verbinden (die sowohl in Debian gibt es 4 und 5) oder einfach nur libcurl.so so wird es verwenden, was Version verfügbar ist?

War es hilfreich?

Lösung

Sie können die tatsächliche .so Datei statt -l auf der Linkerbefehlszeile übergeben, und es sollte tun, was Sie wollen.

Andere Tipps

Anstelle von "-lcurl" Verwendung "-l: libcurl.so.3" Und natürlich auch verwenden "-L _installed_path _"

Wie wäre es ein symbolischer Link lokal für Ihr Projekt zu erstellen, die auf 0,3 verbindet, dann können Sie nur bei der Kompilierung verwenden -L. Ich bin mir nicht sicher, ob Sie allerdings einen Namenskonflikt bekommen würden, aber man kann es immer nennt libcurl-old.so nur für den Fall.

ich glaube, die richtige Art und Weise zu tun, die die --filter und --auxiliary Flaggen des Linkers zu verwenden sein.

Sie sind nicht sehr dokumentiert, aber sollen Ihnen ermöglichen, Symbole aus verschiedenen Versionen derselben Bibliothek zu laden nach der Maschine, die Sie auf installiert sind.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top