2016-07-24 4 views
0

Я пытаюсь скомпилировать встроенную сборку Qt 5.7 (Мне еще предстоит сделать кросс-компиляцию этой вещи ...) на Raspberry Pi 2. Я следил за tutorial on the official Qt wiki. configure шаг у меня есть:Raspberry Pi 2 и Qt 5.7 - застряли в `../qtbase/bin/qmake -conf ../qtbase/qt.conf -o Makefile qt.pro`

./configure -v -opengl es2 -tslib -force-pkg-config -device linux-rasp-pi-g++ -device-option CROSS_COMPILE=/usr/bin/ \ 
-opensource -confirm-license -optimized-qmake -reduce-exports -release -qt-pcre -make libs \ 
-prefix /usr/local/qt5 2>&1 | tee config.out 

И моя установка аналогична той, в учебнике - я использую внешнюю флешку с ext4 файловой системы, смонтированный в /media/USB и что mount --bind от /media/USB/build/QT_SRC к /opt/QT_SRC. Предварительные требования были установлены (в том числе libxcb-xinerama0 и libxcb-xinerama0-dev, которые в статье указаны, если необходимо, для Qt5.6 и более поздних версий). A! 1GB swapfile был добавлен и на USB-накопитель.

После я выполнил ./configure я

time make -j3 2>&1 | tee make.out 

Я также попытался равнину make (без поддержки параллельной компиляции и компоновки). Результат тот же:

/opt/QT_SRC/qtbase/bin/qmake -qtconf /opt/QT_SRC/qtbase/bin/qt.conf -o Makefile qt.pro 
/opt/QT_SRC/qtbase/bin/qmake -qtconf /opt/QT_SRC/qtbase/bin/qt.conf -o Makefile qt.pro 
/opt/QT_SRC/qtbase/bin/qmake -qtconf /opt/QT_SRC/qtbase/bin/qt.conf -o Makefile qt.pro 
/opt/QT_SRC/qtbase/bin/qmake -qtconf /opt/QT_SRC/qtbase/bin/qt.conf -o Makefile qt.pro 
/opt/QT_SRC/qtbase/bin/qmake -qtconf /opt/QT_SRC/qtbase/bin/qt.conf -o Makefile qt.pro 
/opt/QT_SRC/qtbase/bin/qmake -qtconf /opt/QT_SRC/qtbase/bin/qt.conf -o Makefile qt.pro 
... 
... 
... 
/opt/QT_SRC/qtbase/bin/qmake -qtconf /opt/QT_SRC/qtbase/bin/qt.conf -o Makefile qt.pro 

Это все, что я получаю. Он повторяется и повторяет себя много времени и для ДОЛГОСРОЧНОГО ПЕРИОДА. Я хотел сделать часть сборки, пока я спал, поэтому я просто запустил make, прежде чем я лег спать ... 6,5 часа назад. Теперь, когда я проснулся, я нашел это ... результат. У меня, очевидно, есть qmake, иначе возникла бы ошибка, но я понятия не имею, что здесь происходит.

Кто-нибудь пытался построить Qt 5.7 на малине Pi 2 и столкнулся с этой странной проблемой?

+0

Есть debian пакеты для Qt 5.7 в debian/experimental. Я попытаюсь перестроить его для jessie, сначала для архитектуры amd64, а затем для armhf в среде эмулятора малины pi или qemu. –

+0

На данный момент я отказался от QEMU. Я пытался заставить его работать пару раз, но каждый раз, когда я получал разные ошибки, независимо от того, какое ядро ​​я взял. Что касается Jessie build - у меня есть Debian Jessie (64 бит) на моем ноутбуке и Qt 5.6 build from source, поэтому, если причина для этого - проверить, не строит ли он никаких проблем, то да, он строит правильно. Если вы можете указать мне на учебник QEMU для RPi2 и Debian Jessie, которые действительно работают, я бы с удовольствием его использовал. Тем не менее проблема, которую я описал, действительно странная, и даже если я делаю это по-другому, мне все равно хотелось бы знать, почему это происходит. – rbaleksandar

ответ

0

По какой-то причине верхний уровень configure не работает должным образом (по крайней мере, в моем случае ...). Я должен был пойти внутрь qtbase и запустить его оттуда. Вы можете выполнить большинство инструкций от official guide on building Qt 5 natively на Pi, но, похоже, не все будет скомпилировано и установлено. Решение этой проблемы пришло из this post, где он говорит:

  1. cd в каталоге верхнего уровня в Qt 5'по источникам

    $ cd QT_SRC_ROOT_DIRECTORY 
    
  2. Выберите, какие модули вы хотели бы построить и установить и сделать

    $ for module in qtcharts qtdatavis3d qtimageformats qtsvg ...; 
    > do 
    > cd QT_SRC_ROOT_DIRECTORY/$module 
    > QT_SRC_ROOT_DIRECTORY/qtbase/bin/qmake 
    > make 
    > sudo make install 
    > done 
    

В основном это петли т пройдите через каждый модуль, запустив его, запустив qmake (вот почему вы сначала должны скомпилировать то, что находится внутри qtbase, так что вы можете иметь двоичный файл qmake - кроме qtbase все остальные модули основаны на pro файлах, которые являются файлами проекта Qt, которые могут быть используется только с инструментом qmake), затем make и, наконец, sudo make install.

Я использовал абсолютные пути (в отличие от упомянутого сообщения в блоге), поскольку ../$module внутри цикла for на самом деле не работал, но использование абсолютных путей работало как шарм.Так что в моем случае у меня был/opt/QT_SRC как мой QT_SRC_ROOT_DIRECTORY, поэтому я добавил его в этот цикл для доступа к каждому $module. qmake в моем случае был на /opt/QT_SRC/qtbase/bin/qmake.

Надеюсь, это поможет кому-то еще. Теперь у меня есть полностью функциональный Qt 5.7 на моем Raspberry Pi 2, включая модули GPLQtCharts и QtDataVisualization. Просто протестировал сенсорные примеры, а также пример OpenGL Qt cube - замечательно!

PS: Документирование как для родных, так и для кросс-компиляции для Pi требует серьезных обновлений и исправлений ... И исследуйте, как правильно поступать.

0

Я столкнулся с той же проблемой, здание Qt 5.7 на Raspberry Pi 3. Я решил ее сборки и установки всех модулей в отдельности, начиная с qtbase, как это:

$ .../qtbase/bin/qmake 
$ make 
$ make install 

Порядок строительства имеет важное значение. Я не помню порядок, которым я пользовался, но некоторые из модулей Qt дают ошибку, если им нужен еще один модуль, построенный первым. Сообщения об ошибках, как это:

Некоторые из необходимых модулей (qtHaveModule (???)) не доступны

Я не построить несколько модулей, таких как qtwayland, qtwebview или qtwebengine, потому что они нужны некоторые другие вещи, и я не нуждаюсь в них. После создания Qt 5.7 и настройки моей малины Pi я могу успешно запустить все мои приложения Qt.