【解決方法】dbus.hです "一般 " LinuxシステムのDバスヘッダ?

プログラミングQA


補遺
私は正しい道を進んでいますか?

「これを Linux のコピーの “im0plement” dbus に追加します ??? ”

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

これが何をするのかわかりません

main.cpp -ldbus-1 を含める

「アプリを追加する必要がありますか?? どの部分を追加しますか??」

クローン化された (オープンソース) 「アプリケーション」をプログラムに含めています。
必要な「include」ヘッダーを徐々に追加しています…

これを実行するまで

#include
(これは「バックスラッシュ dbus バックスラッシュ dbus ドット文字 h … を含める」と読む必要があります)

目に見える参照はありません。見落としているかもしれません。dbus.h が何をするか (github リソース内) …そしてそれがどこに存在するのか…

それが実際に「Linux システム」リソースである場合

どうやってリンクすればいいのでしょうか?

私が試したこと:

ゴーグルさんに尋ねると、「方法」はほとんど見つかりませんでしたが、Linux で「dbus.h」が何をするのかについての説明はありませんでした。

解決策 1

解決策 2

をインストールしましたか libdbus-1-dev? ヘッダーは、ライブラリに対するプログラミングに必要なものすべてとともに、そのパッケージに含まれています。 こちらも検討してみてはいかがでしょうか libdbus-cpp-dev、dbus ライブラリに CPP ラッパーを提供しているようです。

ヘッダーをワークスペースにコピーすることはお勧めできません。 #include ファイルは他の #include を参照することが多く、コンパイルするためだけに /usr/include の大部分をプロジェクト ディレクトリにコピーする必要がある場合があります。

IDE のドキュメントを参照する必要があります。 プロジェクトがヘッダーを見つけられるように、プロジェクト ファイルに適切なものを追加する方法を説明します。

手動でコンパイルする場合は、pkg-config について知っておく必要があります。 例えば

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

これを使用してコマンドラインからコンパイルできます。
g++ $(pkg-config --cflags --libs) program.cpp -o program

Makefile を使用している場合は、次のようなものを使用できます

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

少し自信がないようなので、次のことを思い出してください。

-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.

追記: apt-file を使用すると、どのパッケージ ファイルが属しているかを確認できます。 見る Linux apt-file コマンドのヘルプと例[^] インストールして実行したら apt-file update apt-file データベースにクエリを実行して、指定された名前のファイルを含むパッケージを検索できます。

$ 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 

これは、インクルード ファイル dbus/dbus.h が「共通」インクルード ファイルの一部ではないが、libdbus-1-dev パッケージのバーとして利用できることを示します。

コメント

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