क्या dbus.h "सामान्य " लिनक्स सिस्टम डी-बस हेडर?

प्रोग्रामिंग


परिशिष्ट
क्या मैं सही रास्ते पर हूँ?

“इसे लिनक्स की मेरी प्रति में “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 शामिल करें

क्या मुझे “अपना ऐप जोड़ना होगा ?? कौन सा भाग ??”

मैं अपने प्रोग्राम में एक क्लोन (खुला स्रोत) “एप्लिकेशन” शामिल कर रहा हूं।
आवश्यक “शामिल करें” शीर्षकों को धीरे-धीरे जोड़कर ठीक किया जा रहा है…

जब तक मैं इसे इसे नहीं चलाता

#शामिल
(इसे “इनक्लूड बैकस्लैश डीबीयूएस बैकस्लैश डीबीयूएस डॉट लेटर एच…,” पढ़ना चाहिए)

कोई दृश्यमान संदर्भ नहीं है, ठीक है, हो सकता है कि मुझसे यह छूट गया हो, dbus.h क्या करता है (जीथब संसाधन में)…और यह कहां रहता है…

यदि यह वास्तव में एक “लिनक्स सिस्टम” संसाधन है

मैं इसे कैसे लिंक करूं?

मैंने क्या प्रयास किया है:

श्रीमती गॉगल से पूछें और कुछ “कैसे करें..” मिले लेकिन लिनक्स में “dbus.h” क्या करता है इसका कोई स्पष्टीकरण नहीं मिला।

समाधान 1

समाधान 2

क्या आपने स्थापित किया है libdbus-1-dev? हेडर उस पैकेज में शामिल हैं, साथ ही लाइब्रेरी के विरुद्ध प्रोग्रामिंग के लिए आपकी ज़रूरत की हर चीज़ शामिल है। आप भी देखना चाहेंगे libdbus-cpp-devजो dbus लाइब्रेरी को CPP रैपर प्रदान करता प्रतीत होता है।

हेडर को अपने कार्य स्थान पर कॉपी करने की सलाह नहीं दी जाती है। #include फ़ाइलें अक्सर अन्य #includes को संदर्भित करती हैं, और चीजों को संकलित करने के लिए आपको अधिकांश /usr/include को अपनी प्रोजेक्ट निर्देशिका में कॉपी करना पड़ सकता है।

आपको अपना आईडीई दस्तावेज़ देखना होगा। इसे आपको बताना चाहिए कि प्रोजेक्ट फ़ाइल में सही चीज़ कैसे जोड़ें ताकि प्रोजेक्ट हेडर ढूंढ सके।

यदि आप हाथ से संकलन कर रहे हैं, तो आपको 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

यदि आप मेकफ़ाइल्स का उपयोग कर रहे हैं, तो आप कुछ इस तरह का उपयोग कर सकते हैं

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.

परिशिष्ट: आप एपीटी-फ़ाइल का उपयोग करके पता लगा सकते हैं कि कौन सी पैकेज फ़ाइलें संबंधित हैं। देखना Linux Apt-फ़ाइल कमांड सहायता और उदाहरण[^] एक बार जब आप इंस्टॉल कर लें और चलाएं apt-file update आप उन पैकेजों के लिए उपयुक्त-फ़ाइल डेटाबेस से क्वेरी कर सकते हैं जिनमें दिए गए नाम वाली फ़ाइलें शामिल हैं:

$ 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をコピーしました