Пакетът 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.

Е, тогава търсим в Google и намирам „можете да изведете директориите за търсене по подразбиране“, така че добре, пиша 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, е необходимо да инсталирате пакета за разработка на libfoobar, за разлика от основния пакет. Пакетът за разработка обикновено има същото име като основния пакет с добавяне на -dev или -devel компонент, напр. libfoobar-dev

Ако проверката ./configure е неуспешна с грешка във формата:

No package 'foobar' found.

това означава, че проверката се е опитала да извлече pkg-config метаданни за foobar и не е намерена нито една. Това обикновено се дължи на факта, че пакетът за разработка libfoobar-dev не е инсталиран, дори ако libfoobar е инсталиран.

person Mike Kinghan    schedule 16.03.2016