2016-05-28 18 views
0

Bluez gdbus.h機能を使用するには、どのライブラリを含める必要がありますか?私は関数のためにエラーのundefined referenceの多くを得ているので、私は明らかにライブラリが不足しています。gdbusライブラリ名とは何ですか?それを見つけるテクニック?

*(ターミナルなどで)どのようなライブラリが使用されているかわかりますか?例えば;私はlocate gdbus.hを使ってヘッダファイルがどこにあるのか見つけることができます。どのようなライブラリgdbus.hが必要なのかを知る方法はありますか?

私の現在のpkg-configは次のようになります。これにより

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

私は次のような多くの未定義の参照を取得:

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'

私は何のライブラリをしないのですか?

+1

'gio-2.0'を単独で使用している' pkg-config'コマンドの出力はどうですか? –

+0

@ChronoKitsune私が 'gio-2.0'を単独で使用していると、' fatal error:gdbus/gdbus.h:そのようなファイルやディレクトリがありません 'というコンパイルエラーが発生します。 –

+0

BlueZをどのようにインストールしましたか? GDBusはDBusからではなく、BlueZ開発者IIRCがヘルパー/ラッパー機能を提供するために書いたファイルです。ヘッダーでは、glib.hとdbus/dbus.hに依存していることがはっきり分かります。 glibはGIO iircのものです。 Gdbus.hはBlueZのソースにあります。パッケージのどこにもありません。 – Zimano

答えて

2

gdbus関数はgioライブラリの一部であるため、gio-2.0パッケージが必要です。

理由がgdbus/gdbus.hでない理由は存在しないということです。私はgdbus.hを提供するパッケージを持っていなくても、はるかに少なくgdbus/gdbus.hです。インクルードする適切なファイルはgio/gio.hです。これには、gdbライブラリ用の22を含むgioライブラリ全体に必要なすべてのヘッダが含まれます。

dbus-glib-1を取り除く。これは推奨されなくなりました(gdbusに有利です)。あなたのコードがgdbusを使用している場合は、dbus-glibも必要ではありません。

+0

gdbus/gdbus.hはBlueZソースコードにあり、パッケージには含まれていません。それは存在する。 – Zimano

0

gbdus.hを使用するために、downloaded多分コンパイルされなければならないのbluezユーザ空間ソースコード、に位置しています。

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

このユーザースペースパッケージのソースで探しているフォルダへのポイント上記のリンク。ヘッダーファイルもそこにあります。ファイル構造は、ダウンロードしたはずのユーザースペースソースコードの構造に対応しています。そこから欠落していたファイルを含めることができます。

関連する問題