2016-05-28 2 views
0

Welche Bibliothek muss ich verwenden, um Bluez gdbus.h Funktionen zu verwenden? Ich bekomme viele undefined reference Fehler für gdbus.h Funktionen, so dass ich offensichtlich eine Bibliothek vermisse.Wie lautet der Name der gdbus-Bibliothek? Technik um es zu finden?

* Gibt es eine Möglichkeit (im Terminal oder anders) kann ich herausfinden, welche Bibliothek eine Header-Datei verwendet? Beispielsweise; Ich kann finden, wo sich eine Headerdatei befindet, indem Sie locate gdbus.h verwenden. Gibt es eine Möglichkeit, herauszufinden, welche Bibliothek benötigt gdbus.h?

Mein aktueller pkg-config ist:

pkg-config --cflags gio-2.0 dbus-glib-1 dbus-1 glib-2.0 gthread-2.0
pkg-config --libs gio-2.0 dbus-glib-1 dbus-1 glib-2.0 gthread-2.0

Damit ich viele undefinierte Referenzen wie bekommen:

agent.c:100: undefined reference to 'g_dbus_send_reply'
agent.c:104: undefined reference to 'g_dbus_send_reply'
agent.c:107: undefined reference to 'g_dbus_send_error'

Welche Bibliothek bin ich dabei?

+1

Was ist die Ausgabe dieser 'pkg-config' Befehle mit' gio-2.0' alleine? –

+0

@ChronoKitsune Wenn ich nur 'gio-2.0' benutze, bekomme ich den Kompilierfehler' fataler Fehler: gdbus/gdbus.h: Keine solche Datei oder Verzeichnis' –

+0

Wie hast du BlueZ installiert? GDBus ist nicht von DBus, es ist eine Datei, die von BlueZ-Entwicklern IIRC geschrieben wurde, um Hilfs-/Wrapper-Funktionen bereitzustellen. Im Header sieht man deutlich, dass es auf glib.h und dbus/dbus.h ankommt. glib kommt von GIO iirc. Gdbus.h ist in der Quelle von BlueZ. Nicht irgendwo in einem Paket. – Zimano

Antwort

2

Die gdbus-Funktionen sind Teil der gio-Bibliothek, also ist das gio-2.0 Paket was Sie wollen.

Der Grund gdbus/gdbus.h ist nicht gefunden, dass es nicht existiert. Ich habe nicht einmal ein Paket, das eine gdbus.h, viel weniger gdbus/gdbus.h bietet. Die richtige Datei ist gio/gio.h, die alle notwendigen Header für die gesamte gio-Bibliothek enthält, einschließlich der 22 für gdbus.

dbus-glib-1 loswerden; es ist veraltet (zugunsten von gdbus). Wenn Ihr Code gdbus verwendet, ist es sehr unwahrscheinlich, dass auch dbus-glib benötigt wird.

+0

gdbus/gdbus.h befindet sich im BlueZ Quellcode, nicht in einem Paket. Das gibt es. – Zimano

0

gbdus.h befindet sich im BlueZ User Space-Quellcode, der, um zu verwenden, downloaded sein sollte und möglicherweise kompiliert werden.

http://git.kernel.org/cgit/bluetooth/bluez.git/tree/gdbus

Der Link oben zeigt auf den Ordner, den Sie für dieses User-Space-Paket in der Quelle suchen. Die Header-Datei ist auch dort. Die Dateistruktur entspricht der Struktur des Benutzer-Space-Quellcodes, den Sie heruntergeladen haben sollten. Von dort können Sie die Dateien hinzufügen, die Sie vermisst haben.

Verwandte Themen