Хобрук: Ваш путь к мастерству в программировании

Лучшая среда для переноса кода C/C++ из Linux в Windows

Я хотел бы сделать свой большой проект пригодным для сборки на платформах Windows. Сам проект написан на C/C++ в соответствии со стандартами POSIX, с некоторыми зависимостями от библиотек, такими как libxml2, libcurl и т.д. Я больше разработчик Linux, чем разработчик Windows, поэтому я понятия не имею, какой набор компиляторов мне следует использовать для переноса кода. Какой из них предлагает большую совместимость с gcc 4.4.3, который я использую прямо сейчас?

Моему проекту нужны flex и bison, есть ли какая-нибудь «готовая к использованию» среда для переноса таких проектов на платформы Windows?

Спасибо.

23.04.2010

  • Приятная солнечная атмосфера с удобными креслами и кофе на разлив. 24.04.2010

Ответы:


1

Если бы это был я, я бы установил следующее:

По сути, это среда, в которой я занимаюсь программированием, и она работает очень хорошо. Если вам нужна IDE, я бы порекомендовал Code::Blocks, но оба gvim и emacs также доступны для Windows.

23.04.2010
  • Кстати, sourceforge.net/projects/mingw/files содержит самые последние инструменты для Unix/Linux. для Windows. @Simone: по этому URL-адресу находится самая последняя версия Bison & Flex, которая вам нужна. У GNUWin32 есть исторические версии, но они довольно хороши. Вам решать. 23.04.2010
  • Нил — спасибо за указание на Twilight Dragon — я был разочарован установщиками mingw.org и медленным графиком выпуска, и не знал, что существуют альтернативные дистрибутивы. 24.04.2010

  • 2

    Если вы не используете какие-либо системные вызовы UNIX, вы можете свободно работать в Windows. Также есть flex и bison для Windows: http://gnuwin32.sourceforge.net/packages.html . Вы можете использовать MinGW: http://www.mingw.org/ .

    Если у вас есть системные вызовы UNIX, вы должны использовать cygwin: http://www.cygwin.com/ , http://en.wikipedia.org/wiki/Cygwin .

    23.04.2010
  • Вероятно, я собираюсь портировать код, используя директивы предварительной компиляции, чтобы определить ОС, на которой я работаю, поэтому даже если есть некоторые вызовы unix, это не большая проблема. 23.04.2010
  • Если вы не возражаете против написания системных вызовов для конкретной ОС, достаточно макросов с MinGW. Если написание кода Windows для замены этих специфичных для UNIX системных вызовов вызывает у вас проблемы, используйте Cygwin. Но помните, что DLL от Cygwin находится под лицензией GPL: cygwin.com/ml/cygwin /1999-07/msg00348.html. 23.04.2010

  • 3

    Я очень сомневаюсь, что ни cygwin, ни mingw еще не достигли 4.4.3. Я бы сделал ставку на возможность обновить компилятор в mingw, чтобы было проще.

    Вам понадобится cygwin, если вы действительно используете какие-либо специфичные для Linux вещи. Я не думаю, что перечисленные вами библиотеки не являются проблемой. POSIX может быть, в зависимости.

    23.04.2010
  • @Neil: Официальный дистрибутив MinGW имеет гарантию качества и график выпуска. Такие проекты, как KDE и Nokia Qt, полагаются на официальный MinGW. Между прочим, не всегда стоит сразу переходить с 4.4.3 на 4.5.0 в случае несовместимости. Кстати, официальный MinGW также имеет 4.5.0. Предыдущая версия, которую он распространяет, была 4.4.0, а не исправленная/обновленная 4.4.3. 23.04.2010
  • @Viet У меня не было проблем (наоборот) с версией TD, которую я рекомендовал в своем ответе. Я никогда серьезно не использовал версию nuwen, но ее легко установить, поэтому я решил упомянуть об этом. И я сделаю почти все, чтобы не пользоваться сайтом MinGW :-) 23.04.2010
  • @Neil: я добавил в закладки официальную страницу загрузки MinGW, чтобы не читать этот спагетти-сайт;) 23.04.2010

  • 4

    Хорошая новая альтернатива — Cygnal. Основная мысль:

    • Во-первых, скомпилируйте код под Cygwin для самого Cygwin, используя его «родной» тулчейн (не MinGW).
    • Затем разверните программу с помощью Cygnal версии Cygwin DLL.

    Cygnal является ответвлением основной библиотеки Cygwin, которая изменяет определенные поведения, которые слишком похожи на Unix.

    Девиз Cygwin: «Почувствуйте себя Linux в Windows». Cygnal смягчает это чувство; он возвращает некоторое ощущение Windows к программам, так что эти программы работают для пользователей Windows за пределами среды Cygwin, используя соглашения Windows.

    Программы понимают собственные пути и тому подобное. Ни одна богатая функциональность API в Cygwin не удалена, только небольшая ее часть настроена.

    22.11.2017
    Новые материалы

    Библиотеки PyTorch и Python для машинного обучения: приложения в здравоохранении с обнимающим лицом…
    В сфере машинного обучения Python выделяется благодаря своей универсальности и набору предлагаемых библиотек. Развитие машинного обучения в здравоохранении можно частично объяснить простотой и..

    «Что за…» очень хорошо представляет мое выражение лица после того, как я увидел это!
    «Что за…» очень хорошо представляет мое выражение лица после того, как я увидел это!

    5 вещей, которые я сделал, чтобы стать профессиональным разработчиком JavaScript
    Чтобы стать профессиональным JS-разработчиком: 1. Практикуйтесь в рутине, 2. Работайте над проектами, 3. Придерживайтесь одного языка, 4. Наблюдайте за чужим кодом, 5. Будьте последовательны..

    От теории к практике: пошаговое руководство по реализации наивного Байеса
    Вы когда-нибудь застревали в проекте классификации, не зная, как точно предсказать результаты для ваших данных? Вы искали более простой и интуитивно понятный алгоритм, который поможет вам достичь..

    #093 | Моделирование вспышки эпидемии с помощью JavaScript — Часть 3
    TLDR: Я сделал симуляцию вспышки эпидемии, в которую можно поиграть здесь . Мой холст, моя сцена Мой HTML — это всего лишь один div с классом stage, и вот как я настроил на нем свой объект..

    numberToString.js (8kyu 16)
    Алгоритм кодовых войн Проблема Нам нужна функция, которая может преобразовать число в строку. 숫자를 문자열로 변환하는 함수를 작성해라. Решение 01 function numberToString(n) { return n.toString(); }..

    Лучшие практики для быстрого изучения языка программирования
    Изучение языка программирования может быть сложной задачей, но при правильном подходе определенно возможно быстро выучить язык программирования. Хорошее понимание языка программирования может..