首页 > 技术文章 > D-Bus初识 环境搭建

adorkable 2020-05-26 19:47 原文

环境:Ubuntu18.04

一、下载

D-Bus源码下载地址:https://dbus.freedesktop.org/releases/dbus/

随便下载一个版本,比如我下载的是dbus-1.12.0.tar.gz(1.12.x为稳定版本)

 

二、编译和安装

编译和安装其实就是Linux源码包的常规三步操作(在INSTALL文件中有说明):

第一步:

./configure --prefix=/home/username/dbus-1.12.0/output

如果不指定prefix路径,默认为/usr。注意!作为学习使用我们一般仅仅需要使用头文件和库文件,因此最好指定安装在home下面,我曾经使用默认的prefix路径,并且使用sudo make install,导致我的电脑重启后无法开机,只能重装,应该是安装时替换了某些系统的文件导致系统出了问题。

config过程可能会有一些error出现,主要是为了告诉我们有哪些依赖没有安装,一般情况下这些error网上搜索一下都比较容易解决,因此就不在这里一一列出。

第二步:

make

第三步:

make install

按照prefix指定路径进行安装,安装后整个output目录结构如下:

.
├── bin
│   ├── dbus-cleanup-sockets
│   ├── dbus-daemon
│   ├── dbus-launch
│   ├── dbus-monitor
│   ├── dbus-run-session
│   ├── dbus-send
│   ├── dbus-test-tool
│   ├── dbus-update-activation-environment
│   └── dbus-uuidgen
├── etc
│   └── dbus-1
│       ├── session.conf
│       └── system.conf
├── include
│   └── dbus-1.0
│       └── dbus
│           ├── dbus-address.h
│           ├── dbus-bus.h
│           ├── dbus-connection.h
│           ├── dbus-errors.h
│           ├── dbus.h
│           ├── dbus-macros.h
│           ├── dbus-memory.h
│           ├── dbus-message.h
│           ├── dbus-misc.h
│           ├── dbus-pending-call.h
│           ├── dbus-protocol.h
│           ├── dbus-server.h
│           ├── dbus-shared.h
│           ├── dbus-signature.h
│           ├── dbus-syntax.h
│           ├── dbus-threads.h
│           └── dbus-types.h
├── lib
│   ├── cmake
│   │   └── DBus1
│   │       ├── DBus1Config.cmake
│   │       └── DBus1ConfigVersion.cmake
│   ├── dbus-1.0
│   │   └── include
│   │       └── dbus
│   │           └── dbus-arch-deps.h
│   ├── libdbus-1.a
│   ├── libdbus-1.la
│   ├── libdbus-1.so -> libdbus-1.so.3.19.3
│   ├── libdbus-1.so.3 -> libdbus-1.so.3.19.3
│   ├── libdbus-1.so.3.19.3
│   └── pkgconfig
│       └── dbus-1.pc
├── libexec
│   └── dbus-daemon-launch-helper
├── share
│   ├── dbus-1
│   │   ├── services
│   │   ├── session.conf
│   │   ├── session.d
│   │   ├── system.conf
│   │   ├── system.d
│   │   └── system-services
│   ├── doc
│   │   └── dbus
│   │       ├── diagram.png
│   │       ├── diagram.svg
│   │       ├── examples
│   │       │   ├── example-session-disable-stats.conf
│   │       │   ├── example-system-enable-stats.conf
│   │       │   └── GetAllMatchRules.py
│   │       └── system-activation.txt
│   └── xml
│       └── dbus-1
│           ├── busconfig.dtd
│           └── introspect.dtd
└── var
    ├── lib
    │   └── dbus
    └── run
        └── dbus

30 directories, 48 files

 

三、使用D-Bus头文件和库

我在本地写了一个demo用于测试运行,内容很简单就不写出来了,下面是编译命令:

gcc main.c -I/home/username/dbus-1.12.0/output/include/dbus-1.0 -I/home/username/dbus-1.12.0/output/lib/dbus-1.0/include -lrt -lpthread -L/home/username/dbus-1.12.0/output/lib -ldbus-1 -o main

简单解释一下

  • -I/home/username/dbus-1.12.0/output/include/dbus-1.0:指定dbus.h路径,是因为一般会在代码里面写成#include <dbus/dbus.h>
  • -I/home/username/dbus-1.12.0/output/lib/dbus-1.0/include:指定dbus-arch-deps.h路径,其实也可以直接copy到dbus.h路径下
  • -lrt和-lpthread:这两个不用关注,不需要这两个库,只是因为我自己用到了
  • -L/home/username/dbus-1.12.0/output/lib -ldbus-1:指定dbus库文件

 

推荐阅读