LINUX.ORG.RU

Qt кросс-компиляция для Raspberry PI


0

1

Добрый день. Кто-нибудь настраивал кросс-компиляцию в Qt под Raspberry? Если таковые имеются прошу поделиться опытом, ибо использование следующего мануала http://www.raspberrypi.ru/doc/view.36.html не принесло мне ничего хорошего. Если точнее, то приложение нормально компилируется, но на Raspberry запускаться отказывается (приложение элементарное - hello world). Спасибо.


А что пишет?

Сам собирал qt для arm-машины вот по этой статье. Нужно только взять подходящий компилятор. У меня все работает. Да, с интеграцией в QtCreator не заморачивался. Кросс-компилирую из консоли...

solovey ★★
()
Ответ на: комментарий от Sakura

Гугл говорит, например, это.

Проверьте, что у Вас выдает команда file. Скорее всего, проблема действительно где-то при компиляции...

solovey ★★
()
Ответ на: комментарий от Sakura

вроде похожу на правду.

У меня выдает

file test
test: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped

Глупый вопрос, но Вы уверены, что запускаете именно эту программу, а не, например, шелловый скрипт с таким же именем?

Просто именно такой же ошибкой может плеваться и bash...

solovey ★★
()
Ответ на: комментарий от solovey

Уверен на 100%. Я пробовал не только эту программу, пытался запустить примеры Qt. Причем одна и та же ошибка вылетает при попытке запустить бинарник, собранные в QtCreator и скопиленный из консоли с помощью g++(linux-arm-g++). И g++ и qmake были собраны buildroot-ом. Может я как-то не так его скомпилил?

Sakura
() автор топика
Ответ на: комментарий от Sakura

Тогда у меня идеи закончились...

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

solovey ★★
()
Ответ на: комментарий от solovey

Ссылку обязательно посмотрю. Уже натыкался на неё, но решил отложить в связи с тем, что нашёл статью, про которую писал выше.

Sakura
() автор топика
Ответ на: комментарий от Thero

Спасибо за ссылку, на первый взгляд это то что надо, после того как опробую этот мануал отпишусь подробнее.

Sakura
() автор топика
Ответ на: комментарий от Sakura

Может я конечно чего-то не понимаю, но не получается у меня скомпилить Qt по этому ману, вылетает кося при попытке сконфигурить Qt:

~/opt/gcc-4.7-linaro-rpi-gnueabihf/bin/arm-linux-gnueabihf-g++: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory -reduce-exports was requested but this compiler does not support it Re-run configure with -v for more information
Sakura
() автор топика
Ответ на: комментарий от Sakura

Это уже похоже на то, что у тебя криво установился компилятор.

А нельзя явно указать, откуда цеплять либы?

solovey ★★
()
Ответ на: комментарий от Sakura

С конфигурацией разобрался, отписаться не успел. Если по делу, проблема возникла из-за 64-битной версии Ubuntu. Решается установкой lib32stdc++6.

Sakura
() автор топика
Ответ на: комментарий от Sakura

Теперь проблемы возникли во время этапа make:

.obj/release-shared/qlibrary_unix.o: In function `QLibraryPrivate::load_sys()':
qlibrary_unix.cpp:(.text+0xf84): warning: Using 'dlopen' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/mnt/rasp-pi-rootfs/usr/lib/arm-linux-gnueabihf/libdl.a(dlopen.o): In function `dlopen':
(.text+0xc): undefined reference to `__dlopen'
/mnt/rasp-pi-rootfs/usr/lib/arm-linux-gnueabihf/libdl.a(dlclose.o): In function `dlclose':
(.text+0x0): undefined reference to `__dlclose'
/mnt/rasp-pi-rootfs/usr/lib/arm-linux-gnueabihf/libdl.a(dlsym.o): In function `dlsym':
(.text+0xc): undefined reference to `__dlsym'
/mnt/rasp-pi-rootfs/usr/lib/arm-linux-gnueabihf/libdl.a(dlerror.o): In function `dlerror':
(.text+0x0): undefined reference to `__dlerror'
/mnt/rasp-pi-rootfs/usr/lib/arm-linux-gnueabihf/libm.a(feholdexcpt.o): In function `feholdexcept':
(.text+0x48): undefined reference to `_dl_hwcap'
/mnt/rasp-pi-rootfs/usr/lib/arm-linux-gnueabihf/libm.a(fesetenv.o): In function `fesetenv':
(.text+0x64): undefined reference to `_dl_hwcap'
collect2: error: ld returned 1 exit status
make[3]: *** [../../lib/libQtCore.so.5.0.0] Error 1
Sakura
() автор топика
Ответ на: комментарий от Sakura

warning: Using 'dlopen' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking

Рискну предположить, что версия glibc тоже не та...

solovey ★★
()
Ответ на: комментарий от Sakura

А если убрать флаг -static? Потом просто перенести нужные либы на плату, и все...

solovey ★★
()
Ответ на: комментарий от I-Love-Microsoft

по поводу того где брал. Всё можно найти тут WmaxStore.
Что касаемо цены, то тут всё не так гладко, вместо обещанныx 35$ плата обойдётся нам в 2300р. , к тому же за отдельную плату докупается корпус (1000р.), sd-карта (~500р.), блок питания(500р.) и переходник (при необходимости) переходник для монитора (ибо HDMI). Итого всё это удовольствие обходиться примерно в 4500р.

Sakura
() автор топика
Ответ на: комментарий от solovey

Я тут вот над чем ещё задумался, а не кроется ли проблема в том, что я на host машине ставил 64-bit OS?

Sakura
() автор топика
Ответ на: комментарий от Sakura

Честно говоря, затрудняюсь ответить. Я в этом плане консервативен - у меня до сих пор на всем машинах стоят 32-битные операционки. Поэтому со специфичными для 64-битных ОС ошибками не сталкивался...

Если система ставилась специально под эту задачу, то можно попробовать установить 32-битную, вдруг поможет.

solovey ★★
()
Ответ на: комментарий от solovey

Пока всё идёт хорошо, раскатал 32-х битку, всё собралось и поставилось без лишних заморочек. Позже отпишусь о результатах, потому что хочу ещё проверить возможность пересборки Qt buidroot-ом, так как там версия 4.7.2 вместо 5(которая по-моему ещё бета) и собирается в разы быстрее.

Sakura
() автор топика
Ответ на: комментарий от Sakura

А как в результате собирали? По мануалу для RPI, или другим способом?

Я buildroot не пробовал, но пишут, что собирается нормально. По крайней мере, под мою плату...

solovey ★★
()
Ответ на: комментарий от Sakura

Да, проблема с 64 битами вряд ли куда-нибудь денется.

А что мешает по тому мануалу скомпилять 4.7.2? Я, правда, не очень понял, что там за патч накладывается... Но что-то мне подсказывает, что для 4.7.2 он может и не понадобиться...

solovey ★★
()

Добился того, что «HelloWorld» компилируется и запускается, но при попытке скомпилировать что-нибудь более осмысленное вылетает ошибка

/home/sakura/opt/gcc-4.7-linaro-rpi-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/4.7.2/../../../../arm-linux-gnueabihf/include/c++/4.7.2/arm-linux-gnueabihf/bits/os_defines.h:40:22: fatal error: features.h: No such file or directory
compilation terminated.

Sakura
() автор топика
Ответ на: комментарий от Sakura

Добрый день. Не могли бы выложить makefile своего хелоуворда. То же бьюсь с расбери.Вроде соборался qt5 , скомпилировался файлик,а на расбери запускаться не хочет. Ошибки не выдает-просто не запускается...

anval
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.