Est-ce que dbus.h "commun " En-tête D-Bus du système Linux ?

la programmation


ADDENDA
Suis-je sur la bonne voie ?

“ajouter ceci à “impl0plement” dbus dans ma copie de Linux ??? ”

nov25-1@nov251-desktop:~$ g++ -Wall –std=c++11 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include main .cpp -ldbus-1

je ne sais pas ce que cela fait

inclure main.cpp -ldbus-1

dois-je “ajouter mon application ?? quelle partie ?? ”

J’inclus une “application” clonée (open source) dans mon programme.
Faire OK en ajoutant progressivement les en-têtes “include” requis…

jusqu’à ce que je le lance celui-ci

#include
(cela devrait lire ” inclure la barre oblique inverse dbus la barre oblique inverse dbus point lettre h …,”)

il n’y a pas de référence visible, OK, je l’ai peut-être manqué, ce que fait dbus.h (dans la ressource github) … et OÙ il vit…

S’il s’agit bien d’une ressource “Système Linux”

comment puis-je créer un lien vers celui-ci ?

Ce que j’ai essayé :

demandez à Mme Goggle et trouvez quelques “comment faire…” mais aucune explication de ce que “dbus.h” fait sous Linux.

Solution 1

Solution 2

Avez-vous installé le libdbus-1-dev? Les en-têtes sont inclus dans ce package, ainsi que tout ce dont vous avez besoin pour programmer avec la bibliothèque. Vous voudrez peut-être aussi examiner libdbus-cpp-devqui semble offrir un wrapper CPP à la bibliothèque dbus.

Il n’est pas conseillé de copier l’en-tête dans votre espace de travail. Les fichiers #include font souvent référence à d’autres #includes, et vous devrez peut-être copier la plupart de /usr/include dans le répertoire de votre projet juste pour que les choses soient compilées.

Vous devez consulter la documentation de votre IDE. Il devrait vous indiquer comment ajouter la bonne chose au fichier du projet afin que le projet puisse trouver les en-têtes.

Si vous compilez à la main, vous devez connaître pkg-config. par exemple

k5054@localhost$ pkg-config --list-all | grep dbus
dbus-1                         dbus - Free desktop message bus
k5054@localhost$ pkg-config --cflags --libs dbus-1
-I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -ldbus-1

Nous pouvons l’utiliser pour compiler à partir de la ligne de commande :
g++ $(pkg-config --cflags --libs) program.cpp -o program

Si vous utilisez des Makefiles, vous pouvez utiliser quelque chose comme

CXXFLAGS = -Wall -Wextra $(shell pkg-config --cflags dbus-1)
LDFLAGS = -lfoo -lbar $(shell pkg-config --libs dbus-1)
 ...

Puisque vous semblez un peu incertain, un rappel :

-I adds a path to the compiler's search path for include files
-L adds a path to the linker's search path for libraries (.so and .a) 
-l adds a library name to the linker's list of objects to include when trying to resolve external object names.

Addendum : vous pouvez trouver à quoi appartiennent les fichiers du package en utilisant apt-file. Voir Aide et exemples de commandes Linux Apt-file[^] Une fois que vous avez installé et exécuté apt-file update vous pouvez interroger la base de données apt-file pour les packages qui incluent des fichiers portant le nom donné :

$ apt-file search dbus/dbus.h
libdbus-1-dev: /usr/include/dbus-1.0/dbus/dbus.h
libdbus-cpp-dev: /usr/include/core/dbus/dbus.h 

Cela indiquerait que le fichier d’inclusion dbus/dbus.h ne fait pas partie des fichiers d’inclusion “communs”, mais est disponible sous forme de barre du package libdbus-1-dev.

コメント

タイトルとURLをコピーしました