Ich habe ein Projekt, das libibverbs verwendet. Ich muss dieses Projekt auf einem Server kompilieren, um es dort laufen zu lassen. Der Server hat libibverbs systemweit installiert, aber leider unterstützt er keine Funktion, die ich brauche.Wählen Sie die richtige Bibliothek Version
Ich entschied mich, meine eigene Version von Libibverbs zu kompilieren und zu verwenden, die die entsprechende Funktion hat. Also kompilierte ich die Bibliothek, installierte sie in meinem Home-Verzeichnis und aktualisierte folgende Umgebungsvariablen: PATH, LD_LIBRARY_PATH, C_INCLUDE_PATH, LIBRARY_PATH, CPLUS_INCLUDE_PATH
Jetzt muss ich mein Projekt kompilieren. Zuerst rufe ich konfigurieren und es schlägt mit folgenden Fehlermeldung:
conftest.c:(.text.startup+0x7): undefined reference to `ibv_open_xrc_domain'
Dies ist das Symbol, das in der systemweiten Version fehlt, aber vorhanden ist, in der Version habe ich installiert. Der erste Eintrag in LIBRARY_PATH ist der Pfad zur neuen libibversion, also habe ich erwartet, dass er zuerst verwendet wird, aber es scheint, dass die alte Version trotzdem verwendet wird.
Der Kompilierungsbefehl, den ./configure verwendet, enthält das Flag -L/libibverbs/1.1.4/lib, das auf das Verzeichnis mit der neuen Bibliotheksversion verweist. Dieses Flag geht direkt hinter -L/usr/lib /../ lib64, die auf das Verzeichnis verweisen, mit systemweiten Libibverbs.
Wenn ich -L mit der neuen Version am Ende des Befehls setze, kompiliert der conftest erfolgreich. https://gist.github.com/planetA/a421669269b14e69026c53f56fa45b2b
Und folgende Werke: https://gist.github.com/planetA/3b0e22bf6aca3a1c67f30bfa3666d9a8
Können Sie mir helfen, die neue Version der Bibliothek in einer Art und Weise zu erzwingen Kommissionierung, die Fänge es konfigurieren
Um klar folgenden nicht zu sein?
Sie müssen die 'configure.ac' des Projekts ändern, aus dem das'./Configure' Skript erstellt wird, und Sie müssen es veröffentlichen, wenn Sie zuverlässige Ratschläge dazu benötigen. –
Aber warum wird die neue Bibliothek nicht von LIBRARY_PATH erfasst? Ist es ein bestimmtes Verhalten? Oder mache ich etwas völlig Seltsames? – mcsim
Es gibt kein -L/home/irgendetwas in der ersten Zeile. Wie erwarten Sie, dass es funktioniert? –