Я уже неоднократно писал, что мне казалось, что я нашел “змеиное масло”, то есть универсальный способ коимпиляции GNU/Linux исходников для Винды – это cygwin. Это оказалось вовсе не так и в использовании cygwin есть куча тонкостей.
1. Компилятор cygwin делает Windows executable files, но чтобы они запустились не внутри cygwin, а в шелле Виндовс или скажем в FAR, им нужны всякие dll, например cygwin1.dll
2. Но при этом в процессе отладки надо помнить, если в каталоге с exe будет лежать dll, то из Винды это запустится, а из cygwin уже нет. Для отладочных экспериментов надо удалять dll из текущего каталога.
3. Если программа работает с файлами, надо помнить, что пути внутри cygwin указываются в UNIX-формате, например bin/circle, а для запуска из среды Windows надо перекомпилировать, меняя косую черту на обратную косую. С учетом экранирования путь будет выглядеть так
“bin\\circle.exe”
Но и на этом пути у меня бывали проблемы. Лучше (проще) вызывать исполнимый файл из текущего каталога и лучше использовать не системный вызов system(), а нечто типа execl (execv).