Как я не обрабатываю “Такой файл или каталог” ошибка для заголовочного файла от, делают?

При компиляции исходного пакета я получил ошибку от make это было похоже:

In file included from foo.c:28:0:
bar.h:23:18: fatal error: bar.h: No such file or directory
 #include <bar.h>    
               ^
compilation terminated.
make[x]: *** [baz] Error 1
make[x]: Leaving directory 

Как я обрабатываю это?

1
задан 6 March 2015 в 07:20

1 ответ

Это обычно указывает, что Вы не установили некоторую зависимость программы, которую Вы пытаетесь скомпилировать. В зависимости от рассматриваемого заголовочного файла и программы Вы пытаетесь скомпилировать, у Вас есть несколько опций:

Целевое программное обеспечение существует в репозиториях Ubuntu

Иногда Вы хотите скомпилировать из источника пакет, уже обеспеченный Ubuntu (чтобы получить другую версию, возможно, или исправить его). Если программное обеспечение не изменилось слишком много, можно использовать apt получить зависимости:

sudo apt-get build-dep <package-name>

Это должно установить все пакеты, должен был создать пакет Ubuntu того программного обеспечения (который может иметь меньше или больше пакетов, чем, в чем Ваш исходный пакет на самом деле нужен).

Если только необходимо внести некоторое незначительное изменение в источнике или применить патч, Вы могли бы даже смочь сохранить значимый бит усилия путем разрешения apt и dpkg сделайте работу, требующую беготни:

sudo apt-get build-dep <package-name>
apt-get source <package-name>

Это загрузит исходные файлы пакета, включая все должен был сделать пакет из него. Файлы будут в названном каталоге <package-name>-<some-version>. Введите его, внесите все изменения, которые Вы хотите и затем делаете:

sudo dpkg-buildpackage -b -us -uc

Это создает неподписанный двоичный пакет (пакеты) в родительском каталоге (cd ..). Можно затем использовать dpkg устанавливать эти пакеты:

sudo dpkg -i  <package-name>_<some-version>_<architecture>.deb

Примеры:

  1. Изменение одной опции сборки в пакете
  2. Не может отредактировать plugins/sudoers/ins_*.h

Целевое программное обеспечение не присутствует в репозиториях Ubuntu

Можно все еще попытать счастья с определенными пропавшими без вести заголовочного файла. Используйте любого индекс Пакетов Ubuntu (опция искать содержание пакетов) или apt-file искать файл. Иногда несколько пакетов могут обеспечить столь же названные файлы, в этом случае, предпочесть:

  1. Файлы в /usr/include.
  2. Пакеты Вашей архитектуры (использование uname -m знать то, что Ваша архитектура).
  3. Любые определенные версии Ваше программное обеспечение зависит от (такие как Qt4 вместо Qt5) - проверяют README и INSTALL файлы в источнике (если есть).
  4. Пакеты, имена которых заканчиваются в -dev, которые обычно включают заголовки, необходимые для компиляции.

См.: Как я нахожу пакет, который обеспечивает файл?

1
ответ дан 7 December 2019 в 16:22

Другие вопросы по тегам:

Похожие вопросы: