Qt и кросскомпиляция в Kubuntu 9.04. Заметка 2.

В предыдущей статье я рассказал о том как скомпилировать windows-приложение в linux, осталось его запустить и проверить его работоспособность.
В принципе в запуске ничего сложного нет, просто приложение будет требовать наличия динамических библиотек Qt и mingw. Это следующие библиотеки:
mingwm10.dll
QtCore4.dll
QtGui4.dll
...

Думаю логика ясна, если используете QtGui, приложите библиотеку, также поступать с QtScript, QtSvg, QtSql и т.д.
Берут эти библиотеки из windows-сборки qt, в сдк это в подпапках bin и mingw.
Библиотеки можно класть в рабочую папку приложения, т.е. ту, которая будет текущей при его запуске. Но это породит дублирование, возможно прочие проблемы. С другой стороны, вы уже будете наглядно видеть, от чего программа зависит и оценить размер дистрибутива.
Если же библиотеки положить в C:\windows\system32, то они будут доступны для всех ваших приложений. Возможно это будет проще. Если вспомнить что речь идет о linux и wine, а не windows, то путь до папки system32, конечно же, другой. Выглядит он примерно так:
~/.wine/dosdevices/c\:/windows/system32
Итак, все библиотеки лежат там, где их ищет wine, значит можно запускать приложение:
wine <имя программы>
Отмечу, что в моей системе программа еще и так запускается:
./<имя программы>
это очень важный момент, т.к. он сыграет большую роль в дальнейшем. Возможно это достигается обычной установкой wine, а может быть требует дополнительных манипуляций. Сейчас я точно сказать не могу. Надеюсь пара комментариев на эту тему позволит сказать точно.
Итак, приложение скомпилировано и запускается в wine, что позволяет быстро проверить его работоспособность и поведение не переключаясь на windows, кстати, если есть желание придать приложению более приятный вид, попробуйте запустить его так:
wine <имя программы> -style cleanlooks
или так:
wine <имя программы> -style plastique
конечно это не лучший вариант, но все же.

Следующим, на мой взгляд, интересным вопросом является кросскомпиляция в QtCreator. По крайней мере я работаю именно в этой IDE и для меня такая возможность является приятным моментом.
Откройте интересующий вас проект в QtCreator и переключитесь в режим "Проекты" (скорее всего нужно нажать Ctrl+4). В списке открытых проектов выберите свой. Выбрав настройки сборки, добавьте новую:

Задайте имя новой сборки, включите флажок "Фоновая сборка" и укажите папку, в которой она будет осуществляться, это позволит не стирать объектные файлы, Makefile'ы и прочие файлы других сборок(сборок под линукс например).
Далее выберите "Этапы сборки":

Выберите этап QMake, в дополнительных параметрах укажите: "-spec win32-g++"
В принципе, для компиляции этого вполне достаточно, просто выбираете режим сборки и компилируете, только вот запускаться программа не будет. Дело в том, что QtCreator пытается запустить файл с именем <имя программы>, а результатом компиляции является файл <имя программы>.exe... Но не все так страшно.

QtCreator позволяет добавить свой этап сборки, для этого нажмите кнопку с плюсом под этапами сборки и выберите "Custom Process Step" как на рисунке, позаботьтесь о том, чтобы новый этап выполнялся последним(перемещайте его стрелками вверх и вниз). Суть этого этапа также отражена на рисунке, фактически вы переименовываете файл <имя программы>.exe с помощью команды /bin/mv. Итак: название этапа - любое, команда - /bin/mv, рабочий каталог - "каталог сборки windows версии", параметры - "<имя программы>.exe <имя программы>".
Теперь QtCreator найдет тот бинарник, который он ищет и запустит его командой - ./<имя программы>, у меня это работает, хочется верить, что сработает и у вас.

В следующей заметке: компиляция dll, настройка postgresql и qwt

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

0
ktchv - 30 Октябрь, 2009 - 08:35
Изображение пользователя ktchv.

однозначно — очень полезно.

было бы еще круто, если бы кто-либо рассказал, как собрать libphonon под венду с помощью mingw. дело в том, что она зависит от directx sdk и windows sdk, пробовал собирать им же, но под вендой — были ошибки компиляции. так и приходилось юзать msvc для всего проекта...

+1
ktchv - 30 Октябрь, 2009 - 12:28
Изображение пользователя ktchv.

гы. сам спросил, сам отвечу. нужен mingw с gcc 4.4+. качаем отсюда патч, накладываем, запускаем configure.exe -phonon и ребилдим qt.

Отправить комментарий

CAPTCHA на основе изображений
Введите цифры