3f-lab и язык C: компилим для Windows

Как ни безбрежны возможности Java, но время от времени приходится создавать для написанных на ней программ низкоуровневые вставки. Типичный пример — если требуется обратиться к WinAPI или другим уже имеющимся высокоскоростным библиотекам. Эта технология — вызывать из Java библиотеки, написанные на C (а также Ассемблере и любом другом подобном языке) — называется JNI. Она прекрасно разжевана в Интернете. Вот отправная точка для тех, кто желает знать подробности. Да и я к этой теме еще предполагаю вернуться.

Конечно же, в среде 3f-lab тоже предполагается использование C. Но вот какая методологическая тонкость: если под Linux для создания программ на C не требуется вообще никакая особенная среда (компилятор и сборщик встроены в систему), то под Windows нужно потрудиться, чтобы настроить необходимые инструменты. О разработке на C под Windows в рамках 3f-lab и пойдет речь. Предупреждаю: нижеследующий текст изобилует буквами и содержит всего одну картинку. Зато освоение технологии сулит существенное расширение свободы в реализации задач программирования.


3f-lab — консольная среда, следовательно и инструменты для работы с C нужно выбирать консольные. Есть несколько вариантов: родные микрософтовские утилиты, комплект от Borland и, наконец, MinGW — свободнораспространяемый компилятор под Windows на основе gcc. Я пользовался всеми тремя в разное время, но остановился на последнем.

Поначалу я считал MinGW «игрушечным» компилятором для создания простых программ. Со временем выяснилось, что с помощью этого комплекта ПО можно создавать приложения практически любой сложности на C и C++ для Windows, задействуя всю мощь WinAPI. Есть, конечно, тонкости, но об этом в следующий раз. Те, кто хочет попробовать компильнуть что-нибудь простенькое с помощью MinGW могут посмотреть скринкаст об организации среды программирования на C в рамках 3f-lab под Windows.

Когда проходит эйфория по поводу «я теперь и на C умею лихо кодить виндовые приложения», возникает маленький гадский вопрос: «Это что же теперь каждый раз для написания таких программ в тормозной эмулятор винды вылезать?» К счастью, у MinGW есть замечательная особенность: он умеет компилить виндовые программы… прямо под Linux. Технология организации такого симбиоза довольно нетипичная, но при определенной аккуратности результат не заставит себя долго ждать.

Во-первых, нужно открыть страницу загрузки проекта MinGW. И это, наверно, самое сложное: там столько всякой всячины, что поначалу легкого фалломорфинга не избежать. Но на самом деле ничего страшного: главный файл, который нужно найти на этой странице и скачать — автоустановщик:

x86-mingw32-build-1.0-sh.tar.bz2

Его задача — выкачать необходимые пакеты из сети, скомпилить всё и грамотно установить в нужное место. Распакуйте архив в /usr/src/mingw. Дальше по замыслу разработчиков предполагается, что нужно просто запустить

x86-mingw32-build.sh

, ответить на несколько вопросов и установка будет выполнена автоматически. Но на практике могут быть всякие нестыковки, например по каким-то причинам установщик не сможет выкачать пакеты из Инета. В этом случае нужно создать каталог /usr/src/mingw/packages и скачать в него вручную следующее с вышеназванного сайта:

binutils-2.19.1-src.tar.gz
gcc-core-3.4.5-20060117-2-src.tar.gz
gcc-g++-3.4.5-20060117-2-src.tar.gz
mingwrt-3.15.2-mingw32-src.tar.gz
w32api-3.13-mingw32-src.tar.gz

Проверяйте имена файлов при скачивании: они должны совпадать до буквы. Там есть очень похожие, но они не подойдут!

Вот теперь всё должно железно получиться, если, конечно, в системе установлены gcc и make. Запускаем

x86-mingw32-build.sh

, указываем в качестве каталога, в котором лежат пакеты /usr/src/mingw/packages, а в качестве каталога, куда помещать готовые бинарники (внимание!) ${PATH2LAB}_bin/mingw, где ${PATH2LAB} — абсолютный путь к вашей лаборатории. На остальные вопросы можно отвечать по умолчанию.

Компилируется это дело долго, минут 5, может даже побольше. Но никаких особых зависимостей не требуется, поэтому у меня, например, получилось с первого раза. Успешно прошли и испытания. Программа на C для вывода на экран таблицы умножения, находящаяся в каталоге

${PATH2LAB}/_projects/C_MS_SAMPLES

превратилась в виндовый экзешник с помощью команды

/_bin/mingw/bin/i386-mingw32-gcc -o tablum.exe tablum.c

и успешно запустилась под Windows.



Правда, размер экзешника получился гораздо больше, чем у скомпиленного непосредственно в среде Windows, но это, думаю, можно поднастроить.
  • +3
  • 20 февраля 2010, 22:46
  • yababay

Комментарии (2)

RSS свернуть / развернуть
+
0
Спасибо за инфу!
Когда-нибудь я доберусь до этой темы...
avatar

Markony

  • 23 февраля 2010, 17:02
+
0
Мощна
avatar

Sergei_T

  • 23 февраля 2010, 17:09

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.