it-swarm.com.de

Wie verknüpfen Sie mit einer bestimmten Version einer gemeinsam genutzten Bibliothek in GCC?

Ich kompiliere einen Code, der libcurl auf einem Debian-Linux-System verwendet. Auf meinem Entwicklungscomputer läuft Debian 5, aber ich möchte, dass die Binärdatei auch auf älteren Debian 4-Systemen verwendet werden kann.

Ich finde, wenn ich -lcurl spezifiziere, wird es mit libcurl.so.4 verlinkt, aber Debian 4-Systeme haben nur libcurl.so.3

Gibt es eine Möglichkeit, GCC anzuweisen, entweder mit libcurl.so.3 (die in Debian 4 und 5 vorhanden ist) oder nur mit libcurl.so zu verknüpfen, damit es die jeweils verfügbare Version verwendet?

39
Adam Pierce

Sie können die tatsächliche .so-Datei anstelle von -l in der Linker-Befehlszeile übergeben, und es sollte das tun, was Sie möchten.

25
bdonlan

Anstelle von "-lcurl" verwenden Sie "-l: libcurl.so.3" .__ und verwenden natürlich auch "-L _installed_path_"

64
engineer.udays

Wenn Sie einen lokalen Link zu Ihrem Projekt erstellen, der auf .3 verweist, können Sie -L zur Kompilierzeit verwenden. Ich bin mir nicht sicher, ob Sie einen Namenskonflikt bekommen würden, aber Sie könnten es immer libcurl-old.so nennen, nur für den Fall.

1
Dana the Sane

Ich denke, der richtige Weg ist, die --filter- und --auxiliary-Flags des Linkers zu verwenden.

Sie sind nicht sehr dokumentiert, sollten jedoch je nach Rechner, auf dem Sie installiert sind, Symbole aus verschiedenen Versionen derselben Bibliothek laden können.

0
galk