Я использую dbus в своей программе, но когда я включаю
#include <dbus-1.0/dbus/dbus.h>
Я получаю сообщение об ошибке:
dbus-1.0/dbus/dbus.h:29:10: fatal error: 'dbus/dbus-arch-deps.h' file not found
В папке dbus нет файла dbus-arch-deps.h
.
Я вижу этот файл в папке lib64/dbus-1.0/include/dbus/dbus-arch-deps.h
Может ли кто-нибудь помочь мне скомпилировать это? Или любое предложение, так как я сильно застрял здесь.
Поскольку я не получил ответа ни от кого, но я, наконец, решил проблему. Поэтому хотел бы опубликовать решение, если кто-то сталкивается с подобной проблемой.
Я решил проблему, добавив -I/usr/lib64/dbus-1.0/include/
в cflags.
Лучшим решением было бы использовать для компиляции следующее: $CC dbus-example.c $(pkg-config --libs --cflags dbus-1)
Поздний ответ. Однако это может быть полезно для тех, кто работает над WSL (подсистема Windows) с Ubuntu (18.04 lts).
Включенные папки
Также ссылка с:
Если вы ничего там не найдете, попробуйте: sudo apt-get install dbus-x11
Пытаться
sudo cp /usr/lib/x86_64-linux-gnu/dbus-1.0/include/dbus/dbus-arch-deps.h /usr/include/dbus-1.0/dbus/.
Проблема в том, что dbus нужны два разных пути включения. В любом случае, лучше всего использовать здесь pkg-config. На самом деле файл pkg-config dbus-1.pc включает следующие cflags:
Cflags: -I${includedir}/dbus-1.0 -I${libdir}/dbus-1.0/include
Так, например, на Manjaro вы получите:
pkg-config --cflags dbus-1
-I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include
На руке Debian вы получите:
pkg-config --cflags dbus-1
-I/usr/include/dbus-1.0 -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include
Как было сказано здесь, если вы используете CMake, просто добавьте
target_include_directories(ProjectName PRIVATE /usr/lib/x86_64-linux-gnu/dbus-1.0/include/ /usr/include/dbus-1.0/)
target_link_libraries(ProjectName PRIVATE dbus-1)
строки после строки add_executable
, где ProjectName - название вашего проекта
наконец, я решил проблему, добавив
-I/usr/lib64/dbus-1.0/include/
в cflags.