Author | Message |
---|
transient Кандидат в члены клуба The eBook
Joined: 10 Mar 2012 Posts: 310
| Posted: 27.10.2012 09:42 | |
| UPDATE!!
Инструкция (предварительно) готова, см. в этой ветке пост libroom.net/viewtopic.php?p=979191#979191
--------------------------------------------------
Добрый день всем!
Немного освоившись с SDK (от vlasovsoft) и порывшись во внутренностях своего PB 622, а также на ветках форума, я вижу, что по крайней мере на моей машинке задействован Qt -- работающий штатный браузер взят похоже из demo в QtSDK и есть ряд установленных Qt-библиотек на покете.
Вопрос: как связать QtSDK (уже установленный QtSDK для Desktop'а 4.8.1 под Убунтой) и имеющийся SDK для Покета (от vlasovsoft) для нормальной компиляции своих программок под PB?
На форуме информации очень мало и разрозненная, но я вижу, что народ уже компилирует под покет с использованием Qt. (К сожалению, даже искать по форуму на две буквы "Qt" не получается -- маловато букв поисковику)
Я прошу тех, кто уже освоился с компиляцией Qt-приложений для покета описать в этой теме хоть какую-то инструкцию по сборке консольных и графических приложений из QtSDK+SDK(для покета) -- ну хоть на примере "hello world" -- главное настройка проекта, подключение библиотек и проч.. Может быть нужно что-то из QtSDK пересобрать? (Ну а дальше можно почитать дальше и самому, книжки по Qt есть).
Есть ли что-то в текущей версии официального SDK по связке с Qt?
Видно, что Qt -- очень перспективная вещь для Покета и тут можно решить некоторые проблемы с отсутствующим софтом.
Last edited by transient on 08.11.2012 20:25; edited 1 time in total |
| | | transient Кандидат в члены клуба The eBook
Joined: 10 Mar 2012 Posts: 310
| Posted: 30.10.2012 14:48 | |
| Пока я сделаю небольшой отчет о том, что у меня уже (не) получилось.
Я поставил, как сказано выше, QtSDK и SDK (от vlasovsoft). На форуме нашел сборку для 64-бит
libroom.net/viewtopic.php?p=832963#832963 от NetSpider и взял из нее mkspecs:
Code: | qmake.conf и qplatformdefs.h
|
подправил их в соответствии с расположением компилятора и утилей у себя, и поместил в директорию linux-arm-gnueabi-g++ ко всем mkspecs. После этого взял простое консольное приложение, которое под Дектопом компилируется и собирается без проблем, создал проект
и запустил использование спецификаций:
Quote: | $ qmake -spec linux-arm-gnueabi-g++ |
Получился Makefile примерно такого вида
Code: | ####### Compiler, tools and options
CC = /usr/bin/arm-none-linux-gnueabi-gcc CXX = /usr/bin/arm-none-linux-gnueabi-g++ DEFINES = -DQT_LINUXBASE -DOPENSSL_NO_TLSEXT -DQ_OS_POCKETBOOK -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED CFLAGS = -pipe -O2 -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 -march=armv6 -Wall -W -D_REENTRANT $(DEFINES) CXXFLAGS = -pipe -DQT_NO_QWS_TRANSFORMED -O2 -O2 -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 -march=armv6 -Wall -W -D_REENTRANT $(DEFINES) INCPATH = -I/opt/QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/linux-arm-gnueabi-g++ -I. -I/opt/QtSDK/Desktop/Qt/4.8.1/gcc/include/QtCore -I/opt/QtSDK/Desktop/Qt/4.8.1/gcc/include/QtNetwork -I/opt/QtSDK/Desktop/Qt/4.8.1/gcc/include/QtGui -I/opt/QtSDK/Desktop/Qt/4.8.1/gcc/include -I. -I. LINK = /usr/bin/arm-none-linux-gnueabi-g++ LFLAGS = -Wl,-O1 -Wl,-rpath,/opt/QtSDK/Desktop/Qt/4.8.1/gcc/lib LIBS = $(SUBLIBS) -L/opt/QtSDK/Desktop/Qt/4.8.1/gcc/lib -lrt -lQtGui -L/opt/QtSDK/Desktop/Qt/4.8.1/gcc/lib -L/usr/X11R6/lib -lQtNetwork -lQtCore -lpthread AR = /usr/bin/arm-none-linux-gnueabi-ar cqs RANLIB = QMAKE = /opt/QtSDK/Desktop/Qt/4.8.1/gcc/bin/qmake TAR = tar -cf COMPRESS = gzip -9f COPY = cp -f SED = sed COPY_FILE = $(COPY) COPY_DIR = $(COPY) -r STRIP = /usr/bin/arm-none-linux-gnueabi-strip INSTALL_FILE = install -m 644 -p INSTALL_DIR = $(COPY_DIR) INSTALL_PROGRAM = install -m 755 -p DEL_FILE = rm -f SYMLINK = ln -f -s DEL_DIR = rmdir MOVE = mv -f CHK_DIR_EXISTS= test -d MKDIR = mkdir -p
####### Output directory ...
|
Дальше запускаю make, получаю странную ошибку:
Code: | $ make /usr/bin/arm-none-linux-gnueabi-g++ -c -pipe -DQT_NO_QWS_TRANSFORMED -O2 -O2 -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 -march=armv6 -Wall -W -D_REENTRANT -DQT_LINUXBASE -DOPENSSL_NO_TLSEXT -DQ_OS_POCKETBOOK -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED -I/opt/QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/linux-arm-gnueabi-g++ -I. -I/opt/QtSDK/Desktop/Qt/4.8.1/gcc/include/QtCore -I/opt/QtSDK/Desktop/Qt/4.8.1/gcc/include/QtNetwork -I/opt/QtSDK/Desktop/Qt/4.8.1/gcc/include/QtGui -I/opt/QtSDK/Desktop/Qt/4.8.1/gcc/include -I. -I. -o qmygo.o qmygo.cpp qmygo.cpp:5:2: warning: no newline at end of file /opt/QtSDK/Desktop/Qt/4.8.1/gcc/include/QtCore/qatomic_i386.h: In function 'int main()': /opt/QtSDK/Desktop/Qt/4.8.1/gcc/include/QtCore/qatomic_i386.h:132: error: impossible constraint in 'asm' /opt/QtSDK/Desktop/Qt/4.8.1/gcc/include/QtCore/qatomic_i386.h:132: error: impossible constraint in 'asm' make: *** [qmygo.o] Ошибка 1 |
Этого я уже понять не могу -- qatomic вызывается для i383 а ведь должен qatomic_arm.h -- и т.д. Сейчас пробую гуглить на тему кросс-компиляции под Qt для arm gnueabi... Похоже, надо пересобирать Qt... Пока не хватает квалификации
Если понять не получится, придется под виртуалкой ставить Ubuntu_64 и для нее использовать сборку от NetSpider |
| | | yuryfdr Член клуба The eBook
Joined: 18 Jun 2009 Posts: 694
| Posted: 30.10.2012 16:20 | |
| transient wrote: | Сейчас пробую гуглить на тему кросс-компиляции под Qt для arm gnueabi |
это бесполезно. там под покет, что-то правлено. попробуй хедеры и библиотеки от NetSpider. _________________ http://fedorchenko.net программы для PocketBook |
| | | transient Кандидат в члены клуба The eBook
Joined: 10 Mar 2012 Posts: 310
| Posted: 31.10.2012 11:57 | |
| Ура!!!!!
Спасибо, я так и сделал -- вручную пересмотрел хедеры и библиотеки, и заменил различающиеся -- библиотеки у NetSpider'a были как раз скомпилированы под Pocket arm.
Консольное приложение типа:
Code: | #include <QProcess>
int main() { QProcess::startDetached ( "/mnt/ext1/applications/calc.app" ); } |
благополучно скомпилировалось и собралось, и на Покете отработало как надо (калькулятор запущен )!!!
К сожалению, пока получилось не вполне то, что я хотел -- не удалось сделать "правильную" (хотя не знаю как ее делать вообще) кросс-компильную сборку и QtSDK попортился (т.е. теперь, чтобы компилять и собирать для Декстопа, надо все возвращать из архива как было)
Но главное, процесс пошел, теперь надо будет попробовать что-нибудь гуевое собрать и научится задействовать Qt Creator -- не всеж под консолью сидеть..
Есть, кстати, в комплекте от NetSpider'a скомпилинная библиотека libQtScript и libQtScriptTools, что как я понимаю, дает надежду компилять простенькие приложения с логикой на скриптовом JavaScript -- и это хорошо!!
Если у народа есть нужда -- то я попозже постараюсь описать что и куда нужно "пихать"... Хотя, хотелось бы нормальных грамотных объяснений от профессионалов-разработчиков ПБ -- как собирать и настраивать кросс-компилятор на основе QtSDK и SDK, предоставляемом ими, ведь это в их интересах?! |
| | | s79 Продвинутый участник форума
Joined: 03 May 2005 Posts: 98
| Posted: 02.11.2012 07:43 | |
| transient wrote: | Если у народа есть нужда -- то я попозже постараюсь описать что и куда нужно "пихать"... |
Если вам не сложно то опишите, чтоб 2 раза одно и то же не делать.
transient wrote: | Хотя, хотелось бы нормальных грамотных объяснений от профессионалов-разработчиков ПБ -- как собирать и настраивать кросс-компилятор на основе QtSDK и SDK, предоставляемом ими, ведь это в их интересах?! |
Они просто забили на электронные книги по ходу ну и соответственно на пользователей. 2.1.2 вышла черт знает когда и там были библиотеки Qt уже, могли и сдк обновить и выложить описание. |
| | | transient Кандидат в члены клуба The eBook
Joined: 10 Mar 2012 Posts: 310
| Posted: 03.11.2012 21:29 | |
| Да, разумеется, напишу, но сейчас мне уже кажется, что проще взять сборку от NetSpider'а, распаковать ее под директорией /opt и поменять несколько приложений с 64-разр на 32. Я попробую потом это сделать.
Теперь о плохом и грустном.
Я скомпилировал и собрал пару простых графических Qt-приложений под Покет. Потом даже взял qorganizer.app скомпиленный самим NetSpider'ом (даже прописал дополнительные библиотеки через LD_LIBRARY_PATH, как было указано)
Однако, нарвался на такую ошибку при исполнении всех графических приложений:
Code: | $ ./test.app Failed to load platform plugin " ". Available platforms are: Pocketbook
Aborted |
Тут пока не могу понять. Как мне кажется, через плугин должна идти работа Qt-библиотек на Покете (может быть это и есть те самые костыли и подпорки, созданные "конторой"??), тогда почему при исполнении данный плугин находится, но не может использоваться? Или наоборот, находятся плугины, даже указывается, что есть под платформу Покета, но приложения не указывают, что им надо именно этот? Хм...
Я специально порылся в пока единственном доступном Qt-коде, про который известно, что его смогли запустить на Покете -- ничего явного и специфичного прописанного там не нашел, чтобы указывало, что мы явно требуем загрузки такого-то плугина. Исходников браузера на основе webkit вроде как пока не показывали.
Второй вопрос еще интереснее, почему на 903, например, у кого-то работает?
И третий вопрос -- в сборке от NetSpider'а "платформенных плугинов" нет вообще, но все работало у него и у кого-то на 903.
Тут мне мысль пришла, может быть, в моей 622-й что-то поменялось, да стоит все либы (я скинул только остутствующую libQtSql) скинуть и проверить... Попробую, больше пока мыслей нет...
иэххх, помощь нужна однако... |
| | | JAW Член клуба The eBook
Joined: 27 Sep 2004 Posts: 22894
Location: Северная столица
| Posted: 03.11.2012 22:00 | |
| transient wrote: | Тут мне мысль пришла, может быть, в моей 622-й что-то поменялось, да стоит все либы (я скинул только остутствующую libQtSql) скинуть и проверить... Попробую, больше пока мыслей нет... Question |
Скорее всего поменялось. Они браузер пилить продолжили дальше на 622 и соответственно вместе с ним QT. _________________ PocketBook: 301+,602(2.2.1a),701, A7, 701 IQ, A7, U7. Fly: IQ 235 |
| | | transient Кандидат в члены клуба The eBook
Joined: 10 Mar 2012 Posts: 310
| Posted: 03.11.2012 22:14 | |
| Я погодя вытащу все Qt-либы из своего 622-го и просто сравню хотя бы размеры с либами от NetSpider'a. Но мне кажется, просто подменкой либ вопрос так просто не решить. С другой стороны было странным по любому поводу указывать в приложении плугин, хотя кто их знает...
Кстати, интересно, а у кого-нибудь (ну, например, у кого есть 903-й) пойдут мною собранные приложения? Надо бы их выложить для теста.
А кроме NetSpider'a никто не может прояснить ситуацию с Qt? Программеры из команды ПБ не выходят на контакт? (я не сильно в курсе, видел что вроде по теме inkview что-то писали и комментировали..) |
| | | transient Кандидат в члены клуба The eBook
Joined: 10 Mar 2012 Posts: 310
| Posted: 04.11.2012 15:47 | |
| УРРА!!
Победил!! Все оказалось просто -- тест на наблюдательность: вспомнил, что запускалка для браузера имела ключ
Quote: | -platform PocketBook |
Таким образом, сделал обертки для всех тестовых примеров и все сработало, даже органайзер запустился!! Перед запуском каждого приложения возникала рекламная заставка, что мол сейчас загрузится экспериментальный браузер, но грузилось в итоге нужное приложение.
Обертка, выглядит примерно так:
Code: | #!/bin/sh
exec /mnt/ext1/application/mylabel.app -platform PocketBook
|
Правда, мои примеры не имели внешнего окна, ну не было у них Window Title с заголовком и названием -- как получалось при тестировании на Десктопе, но возможно, это будет решаемо, так как напротив, органайзер выглядел в точь, как на Декстопе, только очень мелкомасштабным.
Все, теперь настала пора привести результаты экспериментов в порядок, так как видно, что можно разрабатывать, компилировать и запускать Qt-приложения на Покете!! Возможно, получится скомпилить еще какие-то библиотеки и что-то полезное сделать.
вот так!!
|
| | | transient Кандидат в члены клуба The eBook
Joined: 10 Mar 2012 Posts: 310
| Posted: 08.11.2012 16:46 | |
| Я не захотел в качестве инструкции для публики описывать свой путь проб и ошибок, ручных правок и т.п., когда я хотел "скрестить" хороший и минималистичный SDK от vlasovsoft и QtSDK (это возможно, но сложновато), а решил просто попробовать повторить идею NetSpider'a и сделать удобную готовую сборку под 32-bit Ubunbtu. К сожалению, вышло не все так легко, как казалось первоначально и просто заменить пять 64-битных приложений (moc, lrelease, qmake, rcc, uic) в сборке от NetSpider на пять 32-битных из стандартного QtSDK -- недостаточно. Они похоже, при инсталляции компилируются прямо по месту и привязываются к некоторому местоположению и внутренней структуре директорий. Отдаю должное профессионализму NetSpider'a который смог все это настроить с нуля!!!
То, что я сделал -- это такой же вариант, как и у NetSpider'a, только внутренние пути расположены больно кривовато -- заново компилировать или разбираться в конфигурировании указанных утилит мне было крайне лень. Тем не менее, все работает нормально.
qtfrsdk32.tar.bz2
Инструкция
1. скачиваем официальный SDK для PocketBook, распаковываем где-либо в домашней директории, потом в распакованном директорию FRSCSDK переименовываем на frsdk (и меняем регистр букв на маленькие!!!) и переносим под /opt/frsdk это местоположение важно, оно прописано во всех хедерах нашего qtfrsdk!!
2. скачиваем по ссылке выше и распаковываем qtfrsdk32.tar.bz2 в директорию /opt/qtfrsdk
3. прописываем в .profile в PATH /opt/qtfrsdk/Desktop/Qt/4.8.1/gcc/bin
Можно так:
Code: | # set PATH so it includes user's private bin if it exists if [ -d "$HOME/bin" ] ; then PATH="/opt/qtfrsdk/Desktop/Qt/4.8.1/gcc/bin:$HOME/bin:$PATH" fi
|
4. все готово!!
5. берем готовый проект (надо бы какой-нибудь hellooworld выложить), запускаем qmake -project && qmake && make (обычно набирают последовательно команды: qmake -project qmake make в терминале декстопа)
Все собрано! Добавляем к имени приложения расширение .app
6. Для Pb Touch (622) Надо еще сделать обертку -- шелл-файл с расширением .app, где при запуске скомпилированном приложения указываем "-platform PocketBook". Для других машин вроде не надо.
7. Оба файлика закидываем в applications, запуск осуществляем через файл-обертку. (погодя продолжу уточнения инструкции)
8. Вот программка типа "хелло-ворд":
Code: | // сигнали и слоты: кнопка в окне (по мотивам примера из книги Ю.Земскова)
#include <QApplication> #include <QPushButton> #include <QTextCodec>
int main (int argc, char *argv[]) {
QApplication app(argc, argv);
// Установим кодек для корректной работы с русским // QTextCodec *codec = QTextCodec::codecForName("CP1251"); QTextCodec *codec = QTextCodec::codecForName("UTF8"); QTextCodec::setCodecForTr(codec);
QPushButton button (QObject::tr("Кликни, чтобы выйти!")); button.setFont(QFont("Times", 26, QFont::Bold));
QObject::connect( &button, // Источник сигнала SIGNAL(clicked()), // Сигнал о нажатии кнопки &app, // Приемник сигнала SLOT(quit()) // Функция-слот (обработчик события) ); button.show(); // показать кнопку
return app.exec();
}
|
Сохраняем пример в директории btnquit, в файле btnquit.cpp, потом запускаем последовательно команды qmake -project qmake make
Полученый файл переименовываем в btnquit.app Создаем файл-обертку btn.sh.app:
Code: | #!/bin/sh
exec /mnt/ext2/applications/btnquit.app -platform PocketBook |
Закидываем оба файлы в папку applications на SD-Карту (или в память, тогда путь в обертке надо подправить) Лучше даже, приложение закинуть в другую папку, например завести /mnt/ext2/qtapps, чтобы "не засорять" приложения.
Last edited by transient on 21.11.2012 21:30; edited 5 times in total |
| | | transient Кандидат в члены клуба The eBook
Joined: 10 Mar 2012 Posts: 310
| Posted: 17.11.2012 13:14 | |
| Посмотрел несколько стандартных примеров, входящих в QtSDK, некоторые нормально собрались и работают, например, аналоговые часики. Даже тетрис собрался и запускается -- только играть не получается -- надо управление с клавиатуры передать на кнопки, но кнопки сильно тормозят, играть не получится...
скриншот |
| | | maxlilt Кандидат в члены клуба The eBook
Joined: 14 Feb 2012 Posts: 327
Location: Samara, Russia
| Posted: 18.11.2012 13:27 | |
| По всей видимости у меня с третьим шагом запинка, собирается для x86 тестовый проект _________________ PocketBook PRO 912 @2.1.3 + FBR180 + CR3; Onyx Boox I62HD; the new iPad. |
| | | transient Кандидат в члены клуба The eBook
Joined: 10 Mar 2012 Posts: 310
| Posted: 18.11.2012 15:37 | |
| Иэхх, в п.3 была маленькая опечатка, у меня этот кусок выглядит примерно так:
Code: | # set PATH so it includes user's private bin if it exists if [ -d "$HOME/bin" ] ; then PATH="/opt/qtfrsdk/Desktop/Qt/4.8.1/gcc/bin:$HOME/bin:$PATH" fi
|
Щас одну букву исправлю!! |
| | | maxlilt Кандидат в члены клуба The eBook
Joined: 14 Feb 2012 Posts: 327
Location: Samara, Russia
| | | | transient Кандидат в члены клуба The eBook
Joined: 10 Mar 2012 Posts: 310
| Posted: 21.11.2012 21:24 | |
| Вот здорово! А можно вместе с собранными приложениями выкладывать и сырцы (для любителей в них копаться)? Ну хотя бы ссылку на них давать на форуме, где они есть, что за проекты и т.п.?
P.S. добавил пример типа Helloword в инструкцию -- из книги Ю.Земскова. |
| | | maxlilt Кандидат в члены клуба The eBook
Joined: 14 Feb 2012 Posts: 327
Location: Samara, Russia
| | | | s79 Продвинутый участник форума
Joined: 03 May 2005 Posts: 98
| Posted: 22.11.2012 13:40 | |
| А скажите пожалуйста, за основу вы какую версию qt взяли. просто qt-everywhere-opensource-src-4.8.0 и qt-everywhere-opensource-src-4.8.1 коренным образом более чем на 3000 файлов в include отличаются от вашей версии |
| | | transient Кандидат в члены клуба The eBook
Joined: 10 Mar 2012 Posts: 310
| Posted: 22.11.2012 20:49 | |
| Вы говорите о библиотеке? я начинал с QtSDK...
То что выложено мной -- это была сборка от NetSpider'а (см. libroom.net/viewtopic.php?p=832963#832963), но она была под 64-битную Ubuntu. Как и откуда он ее взял -- надо у него спрашивать. Там взято по минимуму (и поди еще придется расширять в будущем). Однако, видно, что сделана сборка профессионально.
Я в ней поменял сначала только 5 исполняемых файлов (moc, lrelease, qmake, rcc, uic) -- взял их из установленного у меня QtSDK 4.8.3?? или 4.8.1 (кажется, ну точнее, из того, что сейчас якобы доступен для 32-битного Linux на http://www.developer.nokia.com/info/sw.nokia.com/id/da8df288-e615-443d -be5c-00c8a72435f8/Qt_SDK.html -- вроде бы он был доступен и на qt-project.org -- но найти его там сейчас не могу). Но это не сработало -- эти утилиты жестко привязываются к расположению и структуре внутренних директорий. Разборки с конфигами не привели ни к чему хорошему, и я изменил в сборке от NetSpider'а структуру директорий, чтобы эти утилиты заработали. Для этого пришлось тоже немного повозиться...
Получилось, что у меня теперь два QtSDK в системе -- стандартный (/opt/QtSDK) и собранный для PocketBook'а (/opt/qtfrsdk)
Первоначальный план же был -- в стандартный QtSDK добавить спеки от NetSpide'а и минимум изменений, что бы я просто мог запускать когда надо "qmake -spec linux-arm-gnueabi-g++" и делалась бы сборка для Покета, а когда не надо -- чтобы работало стандартно. Я долго ковырялся в настройках, сравнивая списки файлов и содержимое разных настроек, но квалификации нету, и в результате полностью сломал QtSDK -- т.е. оно стало заточено только под PocketBook. Тогда решил вернуться и сделал так как выше...
Добавлено спустя 23 минут 4 секунды:
Как я понял тут http://stackoverflow.com/questions/13195083/qt-sdk-1-2-1-not-possible- to-download-anymore и тут http://qt-project.org/forums/viewthread/22003/ Nokia лавочку прикрыла -- SDK свободно уже не доступен, надо регистрироваться, и то вряд ли поможет -- и соответственно ссылки на SDK в Qt Project убрали.
Придется переходить на Qt + Creator или подождать.
|
| | | sergeyvl Член клуба The eBook
Joined: 12 Nov 2010 Posts: 1246
Location: Украина. Харьков
| | | | iamthebest Искушенный участник форума
Joined: 29 Mar 2013 Posts: 63
| Posted: 31.05.2013 16:37 | |
| Как qt в альбомный/портретный вид переключать? SetOrientation не работает. _________________ pb622 |
| | |
| You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
© Libroom, 2021
|