Исходный код для чего-то, что не компилируется, имеет строку #include <dbus/dbus.h>, но в реальной жизни этот заголовочный файл находится в /usr/include/dbus-1.0/. Аналогичная ситуация существует для пакета dbus-c++.
Почему doesn ' t Ubuntu предоставляет символическую ссылку /usr/include/dbus, указывающую на каталог dbus-1.0? Это ошибка в пакете dbus? Если это предназначено, для чего это цель?
Правильно ли это добавить символическую ссылку?
(Изменение источника нецелесообразно - есть много файлов, и они должны соответствовать тем, что есть у других людей.)
Обновление:
Хорошо, я полностью не поняли ситуацию, хотя все еще сводится к проблеме, которую, я думаю, нужно решить с помощью символической ссылки. Каталог dbus, упомянутый в инструкции #include, находится в каталоге более глубокого уровня в разделе /usr/include/dbus-1.0/. Реальная проблема заключается в том, что файл dbus-arch-deps.h, кажется, отсутствует, но фактически хранится в странном месте /usr/lib/x86_64-linux-gnu/dbus-1.0/include/dbus/. Итак, почему Ubuntu не предоставляет символическую ссылку на это в /usr/include/dbus-1.0/dbus или фактически хранит там?
Ответ don_jones, похоже, описывает, как будет работать базовая настройка. Но это не так, как должно быть, для этого есть долгая история развития.
Почему? У меня мало информации об этом, но об этом я мог подумать:
О местоположении по умолчанию или символической ссылке /usr/include/dbus Система готова иметь несколько версий той же библиотеки, которые несовместимы. Слишком сложно отладить, если не можете узнать, какая версия /usr/include/dbus. Я не говорю об одной lib, но если все lib использовали этот метод. Даже с символическими ссылками, вы обнаруживаете и проверяете всю ссылку в дереве usr/include, это непрактично. Поэтому флаги времени компиляции - лучший подход для этого. Однако вы не должны устанавливать эти флаги вручную, посмотрите на GNU autotools. Это краткое введение в GNU Autotools. О dbus-arch-deps.h Да, он должен храниться там по пути x86_64-linux-gnu. Как сказано в названии, это заголовок, зависящий от архитектуры, и для каждой архитектуры вы будете иметь несколько файлов с одинаковым именем. Начиная с 12.04, Ubuntu стал многоархивным. (Еще до 12.04, вы можете перекрестно скомпилировать другую арку). Точно: libdbus-1-dev: i386 /usr/lib/i386-linux-gnu/dbus-1.0/include/dbus/dbus-arch-deps.h Вы не должны включать этот заголовок вручную, но autoconf позаботится об этом.Существуют и другие альтернативы, например: cmake. Этот вопрос старый, но он может открыть дверь для тех, кто ищет то же самое.