Wie kompiliere ich ein einfaches D-Bus/glib-Beispiel?
Lesezeit: 5 Minuten
tvuillemin
Ich versuche zu lernen, wie man D-Bus mit C-Bindungen verwendet. D-Bus habe ich noch nie benutzt. Ich verfolge das Lernprogramm, von dem ich annehme, dass es das offizielle ist (Freedesktop.org). Ich habe es bis jetzt gelesen Absatz das gibt ein erstes Beispielprogramm , aber leider sehe ich auf dieser Seite keinen Hinweis darauf, wie man es kompiliert oder welche Bibliotheken einzubinden sind. Habe ich etwas verpasst ?
Mein Betriebssystem ist Ubuntu 10.04 32bit. Ich habe die installiert libdbus-glib-1-dev Paket. Ich habe versucht hinzuzufügen #include <dbus/dbus.h> am Anfang der Quelldatei und zum Kompilieren
my_dbus.c: In function ‘main’:
my_dbus.c:7:3: error: unknown type name ‘DBusGConnection’
my_dbus.c:8:3: error: unknown type name ‘GError’
...
Habe ich einen Punkt im Tutorial übersehen? Könnten Sie mir bitte helfen, diesen Code zu kompilieren?
Danke im Voraus.
Netcoder
Tutorials wie dieses setzen im Allgemeinen voraus, dass Sie einige Kenntnisse der Sprache haben, für die es geschrieben wurde, in diesem Fall C, sowie des Betriebssystems, auf dem Sie es ausführen werden.
Wenn ich mir das Tutorial anschaue, sehe ich, dass es nur a enthält main Funktion. Daher müssen Sie die richtige hinzufügen #include Anweisungen, damit dies funktioniert:
#include <stdlib.h> // for exit()
#include <dbus/dbus.h> // for dbus_*
#include <dbus/dbus-glib.h> // for dbus_g_*
Außerdem müssen Sie die Bibliotheken kompilieren (in diesem Fall dbus und dbus-glib), oder verwenden Sie die vorkompilierten aus Ihrem Betriebssystem, um sie mit der ausführbaren Datei zu verknüpfen.
Sie benötigen außerdem die mit der Quelle bereitgestellten Header-Dateien oder die “Entwicklungspakete” Ihres Betriebssystems.
Beispielsweise kann ich auf meiner Ubuntu-Workstation sowohl die Quell- als auch die Header-Dateien wie folgt installieren:
Sobald sie kompiliert (oder ordnungsgemäß installiert) sind, fahren Sie mit dem Kompilieren des Programms fort. Sie müssen die richtigen Include-Pfade und Bibliotheken angeben, um sie mit dem Compiler/Linker zu verknüpfen. Mit GCC und meinem aktuellen Setup wäre es beispielsweise:
Dies sollte eine ausführbare Datei erstellen a.out im aktuellen Verzeichnis.
Zugegeben, ich habe ein paar Jahre Erfahrung mit C und Linux, sodass ich all diese Dinge leicht herausfinden kann. Wenn Sie mit C beginnen möchten, sollten Sie jedoch wahrscheinlich mit etwas Einfacherem beginnen.
Danke für Ihre Hilfe. Da wird mir klar, dass ich eigentlich die falsche Frage gestellt habe. Ich hätte deutlich sagen sollen, dass es nicht um C ging. Wie auch immer, deine Antwort ist so vollständig, dass ich meine Antwort bekommen habe und ich bin sicher, dass sie jemand anderem helfen wird, also danke 🙂
– tvuillemin
11. Januar 2013 um 8:51 Uhr
Irgendwelche Ratschläge, wie man das in Eclipse macht? Die Direktiven -I gehen in die Projekteigenschaften c/c++ General | Pfad und Symbole | Enthält, aber ich sehe keine Möglichkeit, die -l-Direktiven einzuschließen ?? Meine dbus-Installation enthielt keine einzuschließenden Bibliotheken ???
– Paul Gorbas
22. September 2014 um 19:31 Uhr
Beachten Sie, dass libdbus-glib veraltet ist, nicht gewartet wird und nicht für den Zugriff auf D-Bus von C: verwendet werden sollte GDBus stattdessen. libdbus-1 wird auch nicht empfohlen: es wird gepflegt, ist aber eine viel niedrigere API für die Verwendung von D-Bus und hat nicht alle praktischen Funktionen von GDBus.
Sieht so aus, als müssten Sie einschließen <dbus/dbus-glib.h> separat, da es nicht automatisch von enthalten ist <dbus.h>
MOHAMED
Basierend auf dem von Ihrem gcc-Befehl zurückgegebenen Fehler. Der gcc kann die sehen <dbus/dbus.h> Datei (ansonsten wird eine Fehlermeldung angezeigt, die besagt, dass er die Header-Datei nicht sehen kann), aber er kann einige Variablen nicht sehen, die in dieser Datei vorhanden sein sollten (‘DBusGConnection’ und ‘GError’) . Möglicherweise verwenden Sie nicht die geeignete Version von dbus
und versuchen Sie, make file anstelle eines Befehls zu verwenden