Пакет MinGW msys не найден: общие советы, как действовать

Время от времени я хочу скомпилировать что-нибудь из исходников с помощью mingw (в Windows). Я открываю msys, набираю ./configure, и он говорит

checking for...xxxxxx

Вот у меня первые вопросы:

  • Где mingw проверяет?
  • Что он проверяет? .dll, .a, .o.,... что еще?

Иногда возникает ошибка типа

configure: error: Package requirements <ogg >= 1.3> were not met:
No package 'ogg' found.

Ну, тогда я гуглю и нахожу «вы можете вывести каталоги поиска по умолчанию», так что ладно, я набираю gcc -print-search-dirs и вижу список каталогов, например, C:/mingw/lib, C:/mingw/lib/gcc, ...

Эти папки содержат .a-файлов. И знаете что, некоторые из них также содержат libogg.a. Так почему же жалуется? Может номер версии? Нет, я скачал самый новый исходник, скомпилировал его и поместил файл .a в каталоги. Та же ошибка. Это сводит меня с ума! Дайте совет, что делать.


person user2366975    schedule 14.03.2016    source источник


Ответы (1)


Традиционно и типично, когда сценарий ./configure проверяет библиотеку, с которой должен быть связан настраиваемый пакет, он проверяет, по крайней мере, наличие и удобство использования самой библиотеки, а также заголовочный файл (файлы) библиотеки, без который компилятор не может использовать API библиотеки. (Я говорю типично, потому что то, что на самом деле делает любая данная проверка ./configure, запрограммировано сопровождающим пакета. Это не имеет ничего общего с вашим компилятором).

Проверка наличия и пригодности libfoobar обычно не означает, что проверка ./configure ищет в файловой системе libfoobar.dll, libfoobar.a или что-то еще. Это означает, что проверка ./configure просто пытается скомпилировать и связать программу-образец с libfoobar, используя подходящие для этого команды, когда libfoobar установлен.

Также часто (и все чаще) ./configure проверка библиотеки libfoobar вызывает pkg-config< /a>, чтобы попытаться получить правильные флаги компилятора и компоновщика для использования с libfoobar. Чтобы эта попытка увенчалась успехом, файл метаданных pkg-config, связанный с пакетом библиотеки, foobar.pc, должен быть найден в стандартном месте файловой системы, например. /usr/lib/pkgconfig, /usr/share/pkgconfig

Чтобы библиотека, ее заголовки и pkg-config метаданные (если они есть) были доступны для ./configure, необходимо установить пакет development для libfoobar, а не базовый пакет. Пакет разработки обычно имеет то же имя, что и базовый пакет, с добавлением компонента -dev или -devel, например. libfoobar-dev

Если проверка ./configure завершается ошибкой вида:

No package 'foobar' found.

это означает, что проверка пыталась получить pkg-config метаданные для foobar, но ничего не было найдено. Обычно это происходит из-за того, что пакет development libfoobar-dev не установлен, даже если libfoobar установлен.

person Mike Kinghan    schedule 16.03.2016