D-Bus初識 環境搭建


環境: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庫文件

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM