Как правильно настроить среду кросс-компиляции для Windows?

Я работаю над приложением, написанным на C, которое должно работать как минимум на Linux и Windows. Я обычно работаю в Linux, поэтому мне хотелось бы перекрестно скомпилировать мое приложение для Windows.

Моя текущая настройка:

  • Debian GNU / Linux amd64
  • Нет сложной системы сборки, просто простой Makefile
  • Использование GCC для Linux, MinGW для Windows

Мое приложение зависит от ряда библиотек. К счастью, в моем дистрибутиве есть заголовки разработки, поэтому компиляция для Linux работает в значительной степени из коробки, используя pkg-config для определения CFLAGS и LDFLAGS.

Это не так хорошо для Windows. Мой дистрибутив предоставляет компилятор toolchain для x86_64-w64-mingw32, который может найти заголовки разработки, но для некоторых библиотек мне нужны разные версии для Windows. К сожалению, эти версии не предоставлены моим дистрибутивом, поэтому я должен установить их самостоятельно.

Итак: Где я могу установить заголовки разработки для Windows? Как заставить pkg-config найти его? Есть ли способ просто скомпилировать для Windows с помощью одной команды, так же, как я могу скомпилировать для Linux, вызвав make ?


В моем случае одной из библиотек является SDL2. Попытка скомпилировать с заголовками, отправленными моим дистрибутивом, приводит к fatal error: iconv.h: No such file or directory . Google для этой ошибки также говорит нам использовать версию Windows. Другие библиотеки, похоже, работают на этапе компиляции, но, очевидно, они не могут найти их на этапе компоновки.

  • Можете ли вы порекомендовать текстовый редактор графического интерфейса для разработчика (необходимые функции внутри)?
  • есть ли какое-либо программное обеспечение с открытым исходным кодом для программирования linux с системными вызовами?
  • nm - почему такое имя?
  • Опция yumdownloder требуется только для 64-битных пакетов
  • Настройка среды разработки для разных дистрибутивов, чем одна
  • Стандартный формат шрифта для терминала
  • Как назвать свою программу, чтобы избежать дублирования исполняемых файлов
  • Раскладка таблицы страниц дампа (KERNEL CONFIG)
  • Как настроить OpenIndiana (151a8 aka «hipster») для разработки?
  • Кто будет использовать эту информацию для лучшей поддержки гибридной графики?
  • Как я создаю приложение B, которое сможет общаться с запущенным приложением A?
  • Linux и Unix - лучшая ОС в мире.