zu zwingen, wie die Verknüpfung auf Linux libgpod und rhythmbox
-
10-10-2019 - |
Frage
Ok, ich habe einige Funktionen auf eine Linux-Bibliothek hinzugefügt.
Doch auch nach ‚make install‘ das Programm, das ich zu bestätigen Funktionalität bin versucht zu der vorherige Version ist die Verknüpfung.
So 'make install' setzt meine Bibliotheken hier: '/ Usr / local / lib' und '/ Usr / local / include'
habe ich folgende auf configure: ./configure enable-Maintainer-mode-enable deinstallierten-build 'CFLAGS = -g -O0' 'CXXFLAGS = -g -O0' 'JFLAGS = -g -O0' 'FFLAGS = -g -O0 CPPFLAGS' = '- L / usr / local / lib / -I /usr/local/include/gpod-1.0 /'
Aber wenn ich versuche, das Programm auszuführen I ‚Symbol nicht gefunden‘ und ‚Plugin kann nicht geladen werden‘ get
Als ich ldd das so erzeugte Plugin: ~ / Entwicklung / rhythmbox / plugins / iPod / .libs $ ldd libipod.so
linux-gate.so.1 => (0x00d97000)
librhythmbox-core.so.1 => /home/gary/Development/rhythmbox/shell/.libs/librhythmbox core.so.1 (0x009ad000)
libgpod.so.4 => /usr/lib/libgpod.so.4 (0x00509000)
Der Schwerpunkt betont, weil es offensichtlich ist an die falsche Bibliothek verbindet ... Wenn ich in der Make-Datei aussehen sehe ich die folgende:
IPOD_CFLAGS = -pthread -I / usr / local / include / gpod-1.0 -I / usr / include / glib-2.0 -I / usr / lib / glib-2.0 / include -I / usr / include / gdk- pixbuf-2.0 -I / usr / include / libpng12
IPOD_LIBS = -pthread -L / usr / local / lib -lgpod -lgdk_pixbuf-2.0 -Im -lgobject-2.0 -lgmodule-2.0 -lpng12 -lgthread-2.0 -lrt -lglib-2.0
So ist die CPPFLAGS durch an das Plugin übergeben werden, und in .deps Ich sehe die richtige Header-Datei enthalten ist ... IE:
~ / Entwicklung / rhythmbox / plugins / iPod / .deps $ weniger rb-ipod-source.Po | grep gpod
/usr/local/include/gpod-1.0/gpod/itdb.h ../../lib/eel-gconf-extensions.h
/usr/local/include/gpod-1.0/gpod/itdb.h:
Ubuntu 10.10
Irgendwelche Ideen?
Lösung
Sie müssen Set LD_RUN_PATH
zu /usr/local/lib
vor configure
und make
läuft. Dies wird /usr/local/lib
als Shared Library-Suchpfad in die ausführbaren Datei eingebettet werden.
Andere Tipps
libgpod.so
verweist auf die alte Version der Bibliothek.