Создание в Windows окружения для программиста
Вступление
- QT
- MinGW и MSYS
В этой работе я опишу решение интересной задачи: Создание в Windows среды для переноса в нее GNU/Linux программ.
В отличии от того, что прочитал на эту тему, рассказывать буду не по-порядку, а так, как это делал я.
Сперва- зачем это понадобилось.
Когда-то писал, что на моем компьютере стоит т.наз. «source-based» дистрибутив Gentoo.
Поглядывая исходники программ, читая всяческие README натыкался на слова о том, как это все можно собрать(скомпилировать) в Windows. На просмотре это все и закончилось бы, но параллельное мое увлечение- программирование. От преизбытка скромности скажу, что не считаю себя ни программистом, ни администратором,- программирую исключительно в двух случаях: ради денег и для своего удовольствия.
Вот именно второй случай- желая получить в Windows те же условия создания программ, что и в GNU/Linux и сподвигли меня на поиски решения. Хоть вариант поставить VirtualBox, в нем — какой-нибудь дистрибутив и существует, он меня не устраивает. Во-первых, хочу не второй Linux, а в Windows работать, а во-вторых, на работе такие хохмы не одобряет большой брат.
1. QT
Думаю, что половина программистов хочет писать программы с «гуем», поэтому смотрел на кроссплатформенные библиотеки. Cреди них выделяются два «столпа» - QT и GTK. Сразу скажу, что хоть и GNOME не люблю (даже иногда мечтаю о том, что бы на oslinux'e был холивар GNOME vs KDE — а что, разве посещаемость не нужна тут?), GTK приложения выглядят очень симпатично. Еще раз повторю: То, что я программирую на QT не говорит о моей неприязни к GTK. Просто идеи и принципы QT-библиотеки мне более понятны.
Значит, выбор мой пал на QT. На работе бывают времена, когда есть свободное время и тогда пришла мысль поставить QT на рабочем компе. Все с той же целью: собрать программу, получить исполняемый файл, но уже в другой ОС.
Для того, что бы получить на «виндузовом» компе все красоты QT (дизайнер, отладчик, IDE наконец) идем на сайт Qt, выбираем меню Downloads, а затем уже — LGPL Free. Хотя, если много денег (или- если Вы знаете про варезные сайты), то можно выбрать и коммерческую версию. В последней версии (начиная с 4.5.X) погоня за платными версиями для обычного программиста себя не оправдывает. Ну или скажем так: я не вижу принципиальной разницы между коммерческими версиями. А когда в LGPL Free версии собрал поддержку ActiveX, то и вовсе для меня этой разницы перестало существовать.
Итак, мы находимся в Download, выбрали LGPL лицензию. Скачиваем Qt SDK — этот пакет содержит «все-в-одном».
Для первичного изучения кросс-платформенной библиотеки я советую отправиться на opennet.ru и поискать статьи. Речь ведь все равно не об этом ;-)
2.MinGW и MSYS.
Компиляция в скаченном SDK происходит благодаря Mingw. Это коллекция свободных заголовочных файлов и библиотек в сочетании с набором инструментов GNU (компилятор GCC и др.), которая позволяет создавать приложения Windows, не использующие сторонние DLL в качестве стандартной библиотеки C (С).
Для компиляции программ использующих только Qt этого и достаточно было бы, но моя цель другая — кросскомпиляция всех нужных мне программ. Например,- wine .
Итак, приступаем к обогащению нашего Mingw.
Кстати говоря, то, что я использовал mingw из SDK вовсе не говорит, что его негде взять. Взять его можно (и нужно) с официального сайта.
После того, как установили можно либо по примеру QT создать батник с созданием переменных среды (а именно- путей к mingw/bin), либо записать это все сразу же в свойства windows (где-то там в "переменных среды").
Как говорил Карлсон «Продолжаем разговор». Для полноценного получения инструмента работы с исходниками linux-программ нам нужно иметь среду(shell, bash...), в которой будем работать. Именно этой средой и является программа MSYS.
Скачать можно из http://www.mingw.org/wiki/msys, порядок установки написан там же. Вкратце поясню: Сперва скачиваем MSYS-1.0.10.exe, устанавливаем. В конце установки инсталлятор спросит, установлен ли mingw и путь. Показываем путь. Затем ставим MSYS DTK 1.0, и обновляем MSYS до версии 1.0.11 распаковав msysCORE-1.0.11-2007.01.19-1.tar.bz2 в каталог с msys, с заменой всех файлов.
Осталось настроить свой профиль. Как это сделать, написано здесь .
В результате вышеописанного получим выполненный сабж.
В дополнение о MinGW опишу одну проблему, с которой пришлось столкнуться:
Поскольку MinGW довольно минималистский, то возможно, понадобятся дополнительные библиотеки, утилиты и т.п., которые привыкли видеть в GNU/Linux, но которых нет в винде. Например- отладчик gdb.
По этому поводу можно посоветовать два варианта:
1. Собирать это все в MinGW из исходников. Рекомендую тем, у кого нет полового партнера.
2. Перефразируя известную фразу - "Все собрано до нас". Портированные бинарники, исходники можно поискать здесь и здесь. Причем первый линк приоритетный. На первом обратите внимание на неброское название User Contributed: mingwPORT.
С этими портами работать просто: скачиваем файл, например, autoconf-2.59-mingwPORT.tar.bz2, копируем его в /usr/src (речь идет о MinGW!). Eсли такого каталога нет, то создаем его. Как создать?... mkdir, конечно. Переходим в этот каталог, распаковываем архив - tar jxf autoconf-2.59-mingwPORT.tar.bz2 . Далее делаем cd autoconf-2.59/mingwPORT и запускаем ./mingwPORT.sh .
Если все же из портов не удалось собрать(не стоит останавливаться на том, почему не собралось- поиски отнимут время и в итоге Вы поймете, что Window$ не совсем идеально подходит для программиста), то ищите бинарники по второй ссылке.
Кстати, насчет autoconf - После установки откройте файл /mingw/bin/autoconf , найдите строку : ${AUTOM4TE='c:/mingw/bin/autom4te'} (у меня такая) и измените ее на : ${AUTOM4TE='/mingw/bin/autom4te'}.
А вот просто скачать Qt SDK с сайта нокиа не судьба ?
Очень полезно, не сегодня так завтра пригодится.
Радует что все просто, как я люблю ;)
> Взять его можно (и нужно) с официального сайта (линк).
в этой строке ошибка, линка-то нет , поправьте
Отлично получилось, ждем первых результатов вашей разработки.
Тестировщиков с двойной загрузкой думаю здесь найдем ;)
А под MacOS оно работает, кто знает... Srgaz, не знаешь?
>в этой строке ошибка, линка-то нет , поправьте
Исправил, спасибо!
>ждем первых результатов вашей разработки.
Пока даже идеи нет. Просто смотрю на библиотеки, читаю доки.
Здесь я совсем не писал про cygwin - все тот же "холивар": писать про него не хотелось, ибо cygwin меня не впечатлил. Вкратце могу сказать, что в windows cygwin ставится проще, чем MinGW - скачиваем, устанавливаем,ждем окончания. В результате будет тот же результат, что и MinGW && MSYS. Но по описаниям пред-установленных библиотек там больше.
P.S.
Хотя вру, конечно. Идея есть, а точнее две:
1. «Пингбол» . Играет один человек. Что-то наподобие волейбола, но там два игрока- пингвины. И стало быть игрок играет за одного.
2. Дань студенчеству. Первая игра, написанная на Watcom C++ (это реклама проприетарщины) была на запоминание двух картинок на поле. Ну в этой версии можно тому, кто открыл все клеточки показать тетку голую.
Как обычно- ничего мне нравится =)
А под MacOS оно работает, кто знает... Srgaz, не знаешь?
OS X Сертифицированная UNIX система == BSD.
Под рукой нет, так что не могу сказать если в портах. Но make install не кто не отменял.
В статью добавил описание установки/сборки библиотек/утилит .
>Сохранил... думаю пригодится
а кто тебе разрешил сохранять? Или ты трафик экономишь?
хочешь сделать автору хороше, сохрани ссулку или разошли ее всем кого знаешь.
пыщ-пыщ!!!
Так ставь винду и работай в ней.
>Ребята скажите пожалуйста под MacOS работает или нет? А то в коментах почитал так и не понял.
http://crossgcc.rts-software.org/doku.php
Привет!
Статья очень интересна. По ней всё сделал и все робит.
Есть два вопросика:
1. Как быть с русификацией? Русские тексты - абракадаброй, а с клавы в окне вовсе ничего не введёшь.
2. Как быть с именем пользователя? Собственно этот вопрос связан с первым.
При создании системы каталогов при установке мсис создает домашний каталог с именем текущего пользователя а-ля "вася пупкин" что под мсисом приводит к тому, что такое название не воспринимается нормально make да и в окне программы отображается абракадаброй (по 1-му вопросу).
Как с этим быть?
Гы, по второму вопросу в батнике msys.bat добавил строку set USERNAME=VasyaPupkin - образовался домашний каталог с соответствующим именем.
Остался вопрос с русификацией.
Ещё немножко разобрался.
Это окружение - фактически как виндовая консоль.
Так что для запуска без rxvt можно пользоваться стандартным способом: переключение кодовой страницы в 1251 (chcp.com 1251) и включение для данного окна TTF шрифта. chcp.com 1251 я вбил в файл с:\msys\1.0\etc\profile и в результате самодельные консольные программы пишут таки по русски без каких либо манипуляций с кодовой страницей внутри.
При запуске через rxvt пишется по русски и так.
Впрочем на русские имена каталогов это не влияет - их по-прежнему не видно...
Я ее вообще убираю. Так проще искать в гугле ответы о проблемах при компиляции программ (Программ, конечно, не моих). Если руссификацию хотите убрать "ненадолго", то это делается так:
# LANG="en" make
На время сеанса:
export LANG="en"
Ну или в настройках поколдовать.
А вообще-то руссификация в MSYS выполнена в кодировке UTF-8. Поэтому до запуска оболочки нужно как-то передать, что будем работать с кодировкой UTF-8. В cmd это делается командой
chcp 65001
Вернуться назад соответственно-
chcp 1251
Как это сделать в MSYS - не знаю. Подскажите, кто смог разобраться.
Русские имена файлов это конечно жестко. Может стоит работать с английскими именами?
Кстати, домашний каталог я определил как /usr/src/ - мне MSYS нужен только для компиляции.




> Во-первых, хочу не второй Linux, а в Windows работать
Ахтунг!!!