C: Запуск файла конфигурации Unix в Windows - PullRequest
7 голосов
/ 27 марта 2010

Я хотел бы перенести несколько приложений, которые я использую в Linux, на Windows. В частности, я работал над wdiff . Программа, которая сравнивает слово за словом два файла.

В настоящее время мне удалось успешно скомпилировать программу на Windows через Cygwin. Тем не менее, я хотел бы запустить программу на Windows, аналогично Project: UnixUtils .

Как бы я занялся портированием утилит unix в среде Windows?

Можно предположить, что я вручную создаю файл ./configure, чтобы я мог создать правильный make-файл. Я на правильном пути? Кто-нибудь имел опыт портирования программного обеспечения GNU на windows?

Обновление:

Я скомпилировал его в Code :: Blocks и получил две ошибки:

  • wdiff.c | 226 | Ошибка: `SIGPIPE ' необъявленный (первое использование в этом функция)

  • readpipe.c: 71: неопределенная ссылка на `_pipe '

  • readpipe.c: 74: неопределенная ссылка на `_fork

Это сигнал linux, который не поддерживается windows ... equvilancy?

  • wdiff.c | 1198 | Ошибка: `ПРОДУКТ ' необъявленный (первое использование в этом функция) |

это в файле configure.in ... жесткий код, вероятно, будет самым быстрым решением ...

Результат:

MSYS позаботилась о проблемах настройки, однако MinGW не смог решить проблемы с posix. Я пытаюсь использовать pthreads в соответствии с рекомендациями mrjoltcola. Тем не менее, через несколько часов я не смог заставить его скомпилировать или связать, используя предоставленные библиотеки. Я думаю, если бы это сработало, это было бы решением, которое я искал. Специальное упоминание Майкла Мэдсена для MSYS.

Ответы [ 4 ]

3 голосов
/ 27 марта 2010

Да. Если вы придерживаетесь стандартной библиотеки C и функций POSIX, большинство из них доступно в Windows. Возможно, вам просто нужно найти реализации. Существуют реализации вещей, которые не требуют Cywgin или MinGW (например, пакет pthreads и т. Д.)

Также есть замечательная книга, написанная в стиле Расширенного программирования У. Ричарда Стивена в среде UNIX , и книга Системное программирование Windows , автор Джонсон Харт. У него 4-е издание. Основное внимание уделяется системному программированию, никакого графического интерфейса нет.

http://www.amazon.com/Windows-Programming-Addison-Wesley-Microsoft-Technology/dp/0321657748

Это лучшая из известных мне книг по программированию для UNIX в Windows.

2 голосов
/ 27 марта 2010

Вы можете взглянуть на MinGW (и MSYS), которые похожи на cygwin, но gcc создает собственные исполняемые файлы Windows. Однако, поскольку эмуляция Unix не так хороша, как Cygwin, вам, возможно, придется скорректировать свой код.

0 голосов
/ 27 марта 2010

MinGW - это самый простой способ получить gcc и связанные двоичные утилиты (включая gdb) на ПК с Windows. Он включает заголовочные файлы и библиотеки импорта, так что вы можете вызывать собственные API-интерфейсы Windows. Если вы хотите больше интегрированной среды разработки IDE, вы можете загрузить бесплатную Visual Studio Express C ++ . * 1005 от Microsoft.

В любом случае вам, скорее всего, придется преобразовывать некоторые вызовы функций для использования специфичных для Windows API (если вы хотите книгу, я бы также порекомендовал книгу Харта, упомянутую в ответе mrjoltcola). Для простых инструментов командной строки это преобразование обычно не так уж и сложно, большие кошмары при портировании, как правило, связаны с инструментами с графическим интерфейсом, которые имеют глубокие встроенные зависимости от инфраструктуры графического интерфейса, предоставляемой ОС.

0 голосов
/ 27 марта 2010

Всегда старайтесь следовать стандартам даже при портировании приложений. POSIX-совместимые компиляторы существуют в Windows / Linux. Вы можете попробовать Mingw. Он имеет полный набор инструментов, необходимый для создания стандартного приложения POSIX (в том числе GNU Linux). Проверьте Dev-Cpp, это облегчает работу.

...