Pull to refresh

Comments 24

Правильный заход со статьей, послееднее время QT развивается быстрыми шагами, думаю актуально сейчас. А как насчет сборки под мобильные ОС, что то пробовали?
Нет, мобильные пока не пробовал. Но суть будет та же: 1) Получить работающий кросс-компилятор; 2) Где-нибудь взять системные библиотеки целевой системы; 3) Скачать/собрать Qt; 4) Для QtCreator'a собрать uic, moc

С Android'ом проблем будет меньше всего — под него сборка Qt есть на официальном сайте, SDK открыт, да и компилятор есть.
Как насчет WinCE? Понятно что платформа уже мертвая, но есть еще довольно много встраиваемых систем на ней, да ТСД до сих пор выпускают. По опыту Qt4 знаю что под CE нет QPrinter, QtXmlPatterns и что-то еще.
На официальном сайте последняя сборка для WinCE — именно Qt4. С одной стороны, я не думаю, что они вырезали старые наработки по этой системе. С другой стороны — если кода в 4 версии не было, то он почти наверняка не появился и в 5.
Как насчет WinCE?

А что именно интересует? На WinCE работает.

Я компилировал из VS (под winxp) на Win CE 6 (ARM) — всё прекрасно работало.
Qt 4 версии.

P.S. В wiki написано, что QtSerialPort тестировался только на эмуляторе — у меня заработал на реальном устройстве без проблем (это я на всякий случай, мало ли кому пригодится).
Супер! А я всё ручками исходники таскаю, хотя подозревал, что несложно настроить кросс-компиляцию. Среда разработки — Linux, сборки нужны и под win32. Благо редко — только финальные релизы.
Я долгое время использовал bash-скрипт, вариант кросс-компиляции от Silmor'a. Но каждый раз в консоль переключаться и искать скрипт стало лениво. Вот и настроил сборку прям из QtCreator
А можно ли вместо gcc собрать clang для кросскомпиляции под мак?
Максимум, что выдал Tatsh — это LLVM-GCC. Эта инструкция наиболее полная из тех, что я нашёл. На OpenSource Apple clang есть. Так что теоретическая возможность кросскомпилировать clang есть. Но GCC без патчей не собирается. А на clang патчей нет… Чуть позже попробую собрать, гляну что из этого получится.
В макпортах я помню был ванильный clang и с ним программы работали. Просто сейчас уже на gcc4.2 сидеть совсем никак, там очень многого нету.
Эх… А мы пока облизываемся даже на 4.2, потому что сидеть приходится на 3.4. Потому что поддержка старой армовой железки под которую новее никак.

Интересно, в QtC 3.0 lldb под Win будет поддерживаться?
Там же нумерация версий не совпадает и 4.2яббл это всего лишь 3.3 обычной llvm.
Макпорты — несколько иная ситуация. Чтоб собрать маковский clang под Linux нужен набор утилит. Как минимум нету xcrun и dsymutil. Также в инструкции от Tatsh не собирается компилятор ресурсов, но вроде с этой задачей справляется и g++, т.к. иконки есть.
Ну все-таки Qt им возможно и не пользуется, и потом иконки же просто кладутся в app bundle и пишутся в plist
А если пойти другим путем и просто загрузить нативные средства сборки при помощи mach-o загрузчика?

github.com/shinh/maloader
Попробовал взять нативные средства из Xcode 4.6. Не получилось:
Скрытый текст
$ ./ld-mac /usr/i686-apple-darwin10/usr/bin/g++ mach/hello.c
collect2: ld terminated with signal 6 [Аварийный останов], core dumped
_ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv: undefined symbol
_ZNSt3__112__next_primeEm: undefined symbol
_ZNSt3__16__sortIRNS_6__lessImmEEPmEEvT0_S5_T_: undefined symbol
_ZNSt3__16__sortIRNS_6__lessIyyEEPyEEvT0_S5_T_: undefined symbol
__cxa_throw: obj=0xccd630
library not found for -lcrt1.10.5.o
Aborted(6) -6 (@0x3e80000372d) PC: 0x7fc93763d425

/media/big/soft/MaxOS/MacWrite/x64/usr/llvm-gcc-4.2/bin/../libexec/gcc/i686-apple-darwin11/4.2.1/ld(_Z6throwfPKcz+b2) [0x100000f0c(f0c)]
/media/big/soft/MaxOS/maloader/libmac.so(strlcpy+0) [0x7fc9373ffb7d]
/lib/x86_64-linux-gnu/libc.so.6(abort+0x17b) [0x7fc937640b8b]
/lib/x86_64-linux-gnu/libc.so.6(gsignal+0x35) [0x7fc93763d425]
/lib/x86_64-linux-gnu/libpthread.so.0(+0xfcb0) [0x7fc9381e7cb0]

С clang всё ещё хуже.
Автор частично реализует стандартную библиотеку для Mac OS. Возможно более свежие версии используют больше функций? Можно попробовать с Xcode 4.1 — последняя версия, которая поддерживается shinh'ом
В Ubuntu нельзя поставить 2 dev пакета которые отличаются только разрядностью. Как это обходится?
А вы попробуйте boost две версии поставить. Это недоMultiArch.
Как уже было сказано — MultiArch. По крайней мере, основные 32 библиотеки ставятся прямо из пакетного менеджера (ia32-libs). Qt4 i386 у меня оттуда почему-то вставать не захотело. Тоже кросс-компилировал.
ia32-libs не нужно ставить. Как написано в описании пакета, это «Transitional package to migrate ia32-libs to multiarch». Если его ставить — он просто тянет кучу 32-битных библиотек. Лучше ставить только то, что действительно нужно.

По поводу 32-битного Qt4: вы наверное опять же ставите transition package (типа libqt4-core). Нужно ставить libqtcore4:i386, тогда всё ок (проверил у себя). Просто посмотрите вывод «aptitude search ~i^libqt | grep 4 | grep -vi transitional», чтобы понять, какие пакеты нужно ставить.
Как ни странно вчера занимался практически тем же самым, qt creator + hidapi, все плавно заработало, хотя настройки креатора не отличаются интуитивностью. Надо будет попробовать кросс-компиляцию. Впечатления от QT положительные, но vb6 все же намного опередил свое время.
Sign up to leave a comment.

Articles