2010-12-08 6 views
1

Ok, ich habe einige Funktionen zu einer Linux-Bibliothek hinzugefügt.Wie erzwingen Verknüpfung auf Linux libgpod und rhythmbox

Aber selbst nach 'make install' versucht das Programm, die Funktionalität zu bestätigen, mit der vorherigen Version zu verknüpfen.

So setzt 'make install' meine Bibliotheken hier: '/ usr/local/lib' und '/ usr/local/include'

Ich habe folgende auf configure: configure - -enable-maintainer-mode --enable-deinstalliert-build 'CFLAGS = -g -O0' 'CXXFLAGS = -g -O0' 'JFLAGS = -g -OO' 'FFLAGS = -g -O0' CPPFLAGS = '- L/usr/local/lib/-I /usr/local/include/gpod-1.0/‘

Aber wenn ich versuche, das Programm, das ich bekommen auszuführen 'Symbol nicht gefunden' und 'Plugin laden kann nicht'

Wenn ich ldd das produzierte Plugin so: ~/Entwicklung/rhythmbox/plugins/iPod/.libs $ ldd libipod.so

linux-gate.so.1 => (0x00d97000)

librhythmbox-Kern .so.1 => /home/gary/Development/rhythmbox/shell/.libs/librhythmbox core.so.1 (0x009ad000)

libgpod.so.4 => /usr/lib/libgpod.so. 4 (0x00509000)

Der Schwerpunkt wird betont, weil es offensichtlich auf die falsche Bibliothek verweist ... Wenn ich in die Make-Datei schaue, sehe ich th Folgendes:

IPOD_CFLAGS = -pthread -I/usr/lokal/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 sehe ich 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?

+0

Ist 'libgpod.so.4' in'/usr/local/lib' installiert? Wenn ja, Inhalt von $ LD_RUN_PATH, $ LD_LIBRARY_PATH,/etc/ld.so.conf? – ephemient

+0

ld.so.conf = include /etc/ld.so.conf.d/*.conf Andere 2 Variablen sind leer ... libgpod.so.4 existiert auf/usr/local/lib Es sieht so aus als würde es die alte Version finden ... – Gary

+0

In der Zwischenzeit habe ich mein Installationsverzeichnis in der Bibliothek geändert, um die Produktionsversion zu überschreiben ... Hoffentlich das funktioniert. – Gary

Antwort

1

Sie müssen LD_RUN_PATH auf /usr/local/lib setzen, bevor Sie configure und make ausführen. Dadurch wird /usr/local/lib als Suchpfad für die gemeinsame Bibliothek in die ausführbare Datei eingebettet.

+0

Ich habe das noch nicht bestätigt, aber einige Leute haben bestätigt, dass es jetzt korrekt ist. Vielen Dank – Gary

0

libgpod.so verweist auf die alte Version der Bibliothek.

Verwandte Themen