D-Bus system bus services directory is required

        在编译 bluez 时遇到的,为编译这个真的是要经历千辛万苦啊,在 configure 阶段时出错了:

D-Bus system bus services directory is required_第1张图片

 由于不太清楚 configure 语法,主要就是看不懂。那一般做法就是在 configure 里搜索一下出错的这行提示,如:

D-Bus system bus services directory is required_第2张图片

这里应该是校验选项  --with-dbussystembusdir,但我在 configure 时是没有加这个选项的,然后再在里面搜索 --with-dbussystembusdir

D-Bus system bus services directory is required_第3张图片

 这个选项应该是指定 dbus 程序的路径,紧接着还有一个选项 --with-dbussessionbusdir=DIR,当我只添加了 --with-dbussystembusdir=DIR 后 configure 还会提示错误:

D-Bus system bus services directory is required_第4张图片

注意上面是 “D-Bus system bus services ” ,这里是“D-Bus session bus services ” 所以两个选项都得加上,最终 configure 是这样的:

./configure --prefix=$(OUT_DIR) --host=arm-linux CC=$(LIB_CC) CFLAGS="-I$(OUT_DIR)/include/ -I$(OUT_DIR)/include/glib-2.0 -I$(OUT_DIR)/include/dbus-1.0" LDFLAGS="-lncurses  -lreadline -ldbus-1 -lglib-2.0 -lical -L/$(OUT_DIR)/lib -L$(OUT_DIR)/lib" DBUS_CFLAGS="-I$(OUT_DIR)/lib/dbus-1.0/include" DBUS_LIBS="-L$(OUT_DIR)/lib" GLIB_CFLAGS="-I$(OUT_DIR)/lib/glib-2.0/include" GLIB_LIBS="-L$(OUT_DIR)/lib" ICAL_CFLAGS="-I$(OUT_DIR)/include" ICAL_LIBS="-L$(OUT_DIR)/lib" --enable-library --sysconfdir=/etc --localstatedir=/var --enable-experimental --with-systemdsystemunitdir=/lib/systemd/system --with-systemduserunitdir=/usr/lib/system --with-dbusconfdir=$(OUT_DIR)/dbus-1/system.d --enable-testing --enable-experimental  --enable-deprecated --disable-systemd --disable-udev --disable-cups --disable-obex --with-dbussystembusdir=$(OUT_DIR)/bin --with-dbussessionbusdir=$(OUT_DIR)/bin

 加的两个选项是这样的:

--with-dbussystembusdir=$(OUT_DIR)/bin --with-dbussessionbusdir=$(OUT_DIR)/bin

因为这次编译是把所有依赖的包全部编译了,编译出来的产物在指定的 OUT_DIR 中,而编译出来 的可执行程序都在其 bin 目录下:

D-Bus system bus services directory is required_第5张图片

 整个bluez及依赖包,请查看 Bluez 的一些概念_猿来是码农的博客-CSDN博客

你可能感兴趣的:(#,bluez,c++,linux)