Как добавить сторонние библиотеки в MinGW?

Я только что установил среду MinGW после этого сообщения

Но как добавить к нему сторонние библиотеки?

Ответ 1

Библиотека состоит из двух основных компонентов - файлов заголовков C и архива скомпилированного объектного кода. GCC имеет множество способов определения этих вещей, но предположим, что вы используете библиотеку foo.a, которая находится в относительном пути каталога foo/lib, и заголовок foo.h, который живет в foo/inc. Ваш собственный код C живет в main.c и выглядит следующим образом:

#include "foo.h"
int main() {
  return FooFunc();    // call function in foo.a
}

Чтобы скомпилировать это, вы можете использовать командную строку:

gcc main.c -Ifoo/inc foo/lib/foo.a -o main.exe

флаг -I добавляет к пути поиска заголовков. Вы также можете добавить в путь lib, но тогда все начинает усложняться: -)

Ответ 2

Не отличается от любой другой системы с помощью gcc

  • получить источники
  • распаковываем
  • запустить configure - для этого может потребоваться tweak или two
  • сделать
  • make install

и теперь используйте новую библиотеку с соответствующими переключателями -Lfoo/bar -lfoobar.

Я рекомендую MSys систему вокруг MinGW, чтобы сделать все это.

Ответ 3

Я только что понял это. Я настоятельно рекомендую читать ссылку на howtos на веб-странице MinGW. Прочитайте их внимательно, так как их очень много. Они достаточно тщательны, хотя это так хорошо стоит вашего времени.

Есть два способа сделать вещи. Во-первых, вы можете просто рассматривать MinGW как компилятор, потому что это то, что он есть, и вызывать его из cmd.exe(командной строки) или IDE. Другой способ сделать это - использовать MSYS, который в основном представляет собой оболочку стиля Unix, которую вы можете запускать в Windows, чтобы использовать инструменты сборки стиля Unix, такие как configure и make.

Для любого из них вам действительно нужно прочитать, как я связался выше, чтобы понять, как ищутся пути зависимостей. Я стесняюсь объяснить это здесь, поскольку это уже объяснено в howtos и дублирует эту информацию, это не очень хорошая идея. Если у вас возникнут конкретные вопросы после их чтения, я с удовольствием предоставил вам дополнительную помощь.