Cross compilation guide



  • Re: EGLFS problem of QT5.7 on Raspberry

    @ascnp Could you please share the guide you followed to build the cross compilation environment for pi?





  • Hi
    I just come to follow the tutorial (https://wiki.qt.io/RaspberryPi2EGLFS) to cross-compile from an opensuse 42.1 64bits for a raspberry pi 3 and all is running BUT !
    I would like to use in my application the webview component and i can't.
    I tried to compile qtwebengine but i have error.
    I understood that it was necessary to first compile qtdeclarative and it's done.
    when i make i have this error :

    make
    cd src/ && ( test -e Makefile || /home/philippe/raspi/qt5/bin/qmake /home/philippe/raspi/qtwebengine/src/src.pro -o Makefile ) && make -f Makefile
    make[1]: Entering directory '/home/philippe/raspi/qtwebengine/src'
    cd core/ && ( test -e Makefile || /home/philippe/raspi/qt5/bin/qmake /home/philippe/raspi/qtwebengine/src/core/core.pro -o Makefile ) && make -f Makefile
    make[2]: Entering directory '/home/philippe/raspi/qtwebengine/src/core'
    ( test -e Makefile.core_headers || /home/philippe/raspi/qt5/bin/qmake /home/philippe/raspi/qtwebengine/src/core/core_headers.pro -o Makefile.core_headers ) && make -f Makefile.core_headers
    make[3]: Entering directory '/home/philippe/raspi/qtwebengine/src/core'
    make[3]: Nothing to be done for 'first'.
    make[3]: Leaving directory '/home/philippe/raspi/qtwebengine/src/core'
    ( test -e Makefile.core_gyp_generator || /home/philippe/raspi/qt5/bin/qmake /home/philippe/raspi/qtwebengine/src/core/core_gyp_generator.pro -o Makefile.core_gyp_generator ) && make -f Makefile.core_gyp_generator
    make[3]: Entering directory '/home/philippe/raspi/qtwebengine/src/core'
    make[3]: Nothing to be done for 'first'.
    make[3]: Leaving directory '/home/philippe/raspi/qtwebengine/src/core'
    ( test -e Makefile.gyp_configure_host || /home/philippe/raspi/qt5/bin/qmake /home/philippe/raspi/qtwebengine/src/core/gyp_configure_host.pro -o Makefile.gyp_configure_host ) && make -f Makefile.gyp_configure_host
    make[3]: Entering directory '/home/philippe/raspi/qtwebengine/src/core'
    make[3]: Nothing to be done for 'first'.
    make[3]: Leaving directory '/home/philippe/raspi/qtwebengine/src/core'
    ( test -e Makefile.gyp_configure_target || /home/philippe/raspi/qt5/bin/qmake /home/philippe/raspi/qtwebengine/src/core/gyp_configure_target.pro -o Makefile.gyp_configure_target ) && make -f Makefile.gyp_configure_target
    make[3]: Entering directory '/home/philippe/raspi/qtwebengine/src/core'
    make[3]: Nothing to be done for 'first'.
    make[3]: Leaving directory '/home/philippe/raspi/qtwebengine/src/core'
    ( test -e Makefile.gyp_run || /home/philippe/raspi/qt5/bin/qmake /home/philippe/raspi/qtwebengine/src/core/gyp_run.pro -o Makefile.gyp_run ) && make -f Makefile.gyp_run
    make[3]: Entering directory '/home/philippe/raspi/qtwebengine/src/core'
    /home/philippe/raspi/qtwebengine/src/3rdparty/ninja/ninja -C /home/philippe/raspi/qtwebengine/src/core/Release
    ninja: Entering directory /home/philippe/raspi/qtwebengine/src/core/Release' [5/10289] CC obj/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/ffmpeg.vp8.o FAILED: /home/philippe/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-gcc -MMD -MF obj/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/ffmpeg.vp8.o.d -DV8_DEPRECATION_WARNINGS -DTOOLKIT_QT -D_FILE_OFFSET_BITS=64 -DNO_TCMALLOC -DDISABLE_NACL -DGL_GLEXT_PROTOTYPES -DEGL_EGLEXT_PROTOTYPES '-DOPENSSLDIR="/usr/lib/ssl"' -DOPENSSL_LOAD_CONF -DEGL_API_FB=1 -DLINUX=1 -DCHROMIUM_BUILD -DUI_COMPOSITOR_IMAGE_TRANSPORT -DUSE_AURA=1 -DUSE_OZONE=1 -DUSE_DEFAULT_RENDER_THEME=1 -DUSE_LIBJPEG_TURBO=1 -DENABLE_ONE_CLICK_SIGNIN -DENABLE_PRE_SYNC_BACKUP -DENABLE_MEDIA_ROUTER=1 -DENABLE_CONFIGURATION_POLICY -DENABLE_HIDPI=1 -DENABLE_TOPCHROME_MD=1 -DDONT_EMBED_BUILD_METADATA -DENABLE_BACKGROUND=1 -DCLD_VERSION=2 -DENABLE_APP_LIST=1 -DENABLE_SETTINGS_APP=1 -DENABLE_SUPERVISED_USERS=1 -DENABLE_MDNS=1 -DENABLE_SERVICE_DISCOVERY=1 -DHAVE_AV_CONFIG_H -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -DPIC -DFF_API_PIX_FMT_DESC=0 -DFF_API_OLD_DECODE_AUDIO=0 -DFF_API_DESTRUCT_PACKET=0 -DFF_API_GET_BUFFER=0 -D_ISOC99_SOURCE -D_LARGEFILE_SOURCE -DUSE_OPENSSL=1 -DUSE_OPENSSL_CERTS=1 -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -Igen -I/home/philippe/raspi/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm-neon -I/home/philippe/raspi/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg -I/home/philippe/raspi/sysroot/opt/vc/include -I/home/philippe/raspi/sysroot/opt/vc/include/interface/vcos/pthreads -I/home/philippe/raspi/sysroot/opt/vc/include/interface/vmcs_host/linux -fstack-protector --param=ssp-buffer-size=4 -pthread -fno-strict-aliasing -Wno-unused-parameter -Wno-missing-field-initializers -fvisibility=hidden -pipe -fPIC -Wno-unused-local-typedefs -fPIC -fomit-frame-pointer -Wno-deprecated-declarations -w -DHAVE_VFP_ARGS=1 -std=c99 -pthread -fno-math-errno -fno-signed-zeros -fno-tree-vectorize -Wno-format -Wno-unused-result -I/home/philippe/raspi/sysroot/usr/include/dbus-1.0 -I/home/philippe/raspi/sysroot/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/home/philippe/raspi/sysroot/usr/include/dbus-1.0 -I/home/philippe/raspi/sysroot/usr/lib/arm-linux-gnueabihf/dbus-1.0/include -march=armv7-a -mtune=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard --sysroot=/home/philippe/raspi/sysroot -O2 -fno-ident -fdata-sections -ffunction-sections -funwind-tables -c /home/philippe/raspi/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/vp8.c -o obj/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/ffmpeg.vp8.o {standard input}: Assembler messages: {standard input}:45: Error: bad instructionldrhcs r0,[r2],#2'
    {standard input}:104: Error: bad instruction ldrhcs r6,[ip],#2' {standard input}:1223: Error: bad instructionldrhcs fp,[r3],#2'
    {standard input}:1301: Error: bad instruction ldrhcs r4,[r2],#2' {standard input}:1339: Error: bad instructionldrhcs r7,[r2],#2'
    {standard input}:1375: Error: bad instruction ldrhcs r6,[r2],#2' {standard input}:1447: Error: bad instructionldrhcs r2,[ip],#2'
    {standard input}:1480: Error: bad instruction ldrhcs r8,[lr],#2' {standard input}:1515: Error: bad instructionldrhcs ip,[r2],#2'
    {standard input}:1550: Error: bad instruction ldrhcs ip,[r9],#2' {standard input}:1598: Error: bad instructionldrhcs r8,[r3],#2'
    {standard input}:1641: Error: bad instruction ldrhcs r10,[r3],#2' {standard input}:1691: Error: bad instructionldrhcs r6,[r3],#2'
    {standard input}:1729: Error: bad instruction ldrhcs r5,[r3],#2' {standard input}:2004: Error: bad instructionldrhcs r5,[r2],#2'
    {standard input}:2050: Error: bad instruction ldrhcs r6,[r3],#2' {standard input}:2087: Error: bad instructionldrhcs r4,[r3],#2'
    {standard input}:2131: Error: bad instruction ldrhcs r6,[r3],#2' {standard input}:2171: Error: bad instructionldrhcs r4,[r3],#2'
    {standard input}:2215: Error: bad instruction ldrhcs r6,[r3],#2' {standard input}:2429: Error: bad instructionldrhcs r7,[r3],#2'
    {standard input}:2591: Error: bad instruction ldrhcs r1,[r3],#2' {standard input}:2627: Error: bad instructionldrhcs r7,[r3],#2'
    {standard input}:2673: Error: bad instruction ldrhcs r5,[r3],#2' {standard input}:2709: Error: bad instructionldrhcs r5,[r3],#2'
    {standard input}:2748: Error: bad instruction ldrhcs r5,[r3],#2' {standard input}:2797: Error: bad instructionldrhcs r5,[r3],#2'
    {standard input}:2898: Error: bad instruction ldrhcs r4,[r2],#2' {standard input}:2939: Error: bad instructionldrhcs r4,[r3],#2'
    {standard input}:3024: Error: bad instruction ldrhcs r5,[r3],#2' {standard input}:3066: Error: bad instructionldrhcs r7,[r3],#2'
    {standard input}:3112: Error: bad instruction ldrhcs r7,[r3],#2' {standard input}:3155: Error: bad instructionldrhcs r7,[r3],#2'
    {standard input}:3198: Error: bad instruction ldrhcs r8,[r3],#2' {standard input}:3237: Error: bad instructionldrhcs r5,[r3],#2'
    {standard input}:3281: Error: bad instruction ldrhcs r8,[r3],#2' {standard input}:3326: Error: bad instructionldrhcs r5,[r3],#2'
    {standard input}:3370: Error: bad instruction ldrhcs r8,[r3],#2' {standard input}:3438: Error: bad instructionldrhcs r1,[r2],#2'
    {standard input}:3479: Error: bad instruction ldrhcs r7,[r3],#2' {standard input}:3594: Error: bad instructionldrhcs r4,[r3],#2'
    {standard input}:3635: Error: bad instruction ldrhcs r4,[r3],#2' {standard input}:3675: Error: bad instructionldrhcs r6,[r3],#2'
    {standard input}:3715: Error: bad instruction ldrhcs r4,[r3],#2' {standard input}:3762: Error: bad instructionldrhcs r4,[r3],#2'
    {standard input}:3802: Error: bad instruction ldrhcs r6,[r3],#2' {standard input}:3842: Error: bad instructionldrhcs r4,[r3],#2'
    {standard input}:3888: Error: bad instruction ldrhcs lr,[r2],#2' {standard input}:3925: Error: bad instructionldrhcs r5,[r2],#2'
    {standard input}:3971: Error: bad instruction ldrhcs r4,[r3],#2' {standard input}:4012: Error: bad instructionldrhcs r6,[r3],#2'
    {standard input}:4065: Error: bad instruction ldrhcs r6,[r3],#2' {standard input}:4108: Error: bad instructionldrhcs r6,[r3],#2'
    {standard input}:4169: Error: bad instruction ldrhcs r7,[r2],#2' {standard input}:4613: Error: bad instructionldrhcs r10,[r3],#2'
    {standard input}:4686: Error: bad instruction ldrhcs r10,[r3],#2' {standard input}:4800: Error: bad instructionldrhcs fp,[r1],#2'
    {standard input}:4930: Error: bad instruction ldrhcs fp,[r0],#2' {standard input}:8877: Error: bad instructionldrhcs lr,[r1],#2'
    {standard input}:8986: Error: bad instruction ldrhcs r8,[r3],#2' {standard input}:9024: Error: bad instructionldrhcs r6,[r10],#2'
    {standard input}:9077: Error: bad instruction ldrhcs r7,[r2],#2' {standard input}:9119: Error: bad instructionldrhcs r8,[r3],#2'
    {standard input}:9173: Error: bad instruction ldrhcs r10,[r3],#2' {standard input}:9228: Error: bad instructionldrhcs r6,[r7],#2'
    {standard input}:9360: Error: bad instruction ldrhcs r10,[r3],#2' {standard input}:9475: Error: bad instructionldrhcs r0,[r6],#2'
    {standard input}:9641: Error: bad instruction ldrhcs r5,[r2],#2' {standard input}:10584: Error: bad instructionldrhcs r10,[r3],#2'
    {standard input}:10665: Error: bad instruction ldrhcs r0,[ip],#2' {standard input}:11042: Error: bad instructionldrhcs r1,[r10],#2'
    {standard input}:11145: Error: bad instruction ldrhcs r2,[r10],#2' {standard input}:11414: Error: bad instructionldrhcs r2,[lr],#2'
    {standard input}:11485: Error: bad instruction ldrhcs r0,[lr],#2' {standard input}:11632: Error: bad instructionldrhcs r2,[ip],#2'
    {standard input}:11670: Error: bad instruction ldrhcs lr,[ip],#2' {standard input}:11724: Error: bad instructionldrhcs lr,[r5],#2'
    {standard input}:11822: Error: bad instruction ldrhcs r8,[r3],#2' {standard input}:11904: Error: bad instructionldrhcs r8,[r3],#2'
    {standard input}:12634: Error: bad instruction ldrhcs fp,[r3],#2' {standard input}:12705: Error: bad instructionldrhcs fp,[r3],#2'
    {standard input}:12789: Error: bad instruction ldrhcs r6,[r2],#2' {standard input}:12830: Error: bad instructionldrhcs r5,[r3],#2'
    {standard input}:12882: Error: bad instruction ldrhcs fp,[r3],#2' {standard input}:12936: Error: bad instructionldrhcs r5,[r3],#2'
    {standard input}:12976: Error: bad instruction ldrhcs r6,[r2],#2' {standard input}:13014: Error: bad instructionldrhcs r7,[r8],#2'
    {standard input}:13091: Error: bad instruction ldrhcs r0,[r5],#2' {standard input}:13258: Error: bad instructionldrhcs fp,[ip],#2'
    {standard input}:13349: Error: bad instruction ldrhcs fp,[r3],#2' {standard input}:13415: Error: bad instructionldrhcs r3,[ip],#2'
    {standard input}:13503: Error: bad instruction ldrhcs fp,[lr],#2' {standard input}:13609: Error: bad instructionldrhcs fp,[r3],#2'
    {standard input}:13678: Error: bad instruction ldrhcs ip,[lr],#2' {standard input}:13878: Error: bad instructionldrhcs r3,[r4],#2'
    {standard input}:13973: Error: bad instruction ldrhcs r1,[r4],#2' {standard input}:14063: Error: bad instructionldrhcs r7,[r1],#2'
    {standard input}:14144: Error: bad instruction ldrhcs r4,[r7],#2' {standard input}:14199: Error: bad instructionldrhcs r4,[lr],#2'
    {standard input}:14239: Error: bad instruction ldrhcs r3,[r4],#2' {standard input}:14295: Error: bad instructionldrhcs r8,[r3],#2'
    {standard input}:14340: Error: bad instruction ldrhcs r8,[r3],#2' {standard input}:14440: Error: bad instructionldrhcs r8,[r3],#2'
    {standard input}:14488: Error: bad instruction `ldrhcs r8,[r3],#2'
    [5/10289] CXX obj.host/src/3rdparty/chromium/third_party/prot...f/src/google/protobuf/stubs/protobuf_full_do_not_use.common.o
    ninja: build stopped: subcommand failed.
    Makefile.gyp_run:283: recipe for target 'invoke_ninja' failed
    make[3]: *** [invoke_ninja] Error 1
    make[3]: Leaving directory '/home/philippe/raspi/qtwebengine/src/core'
    Makefile:116: recipe for target 'sub-gyp_run-pro-make_first' failed
    make[2]: *** [sub-gyp_run-pro-make_first] Error 2
    make[2]: Leaving directory '/home/philippe/raspi/qtwebengine/src/core'
    Makefile:49: recipe for target 'sub-core-make_first' failed
    make[1]: *** [sub-core-make_first] Error 2
    make[1]: Leaving directory '/home/philippe/raspi/qtwebengine/src'
    Makefile:44: recipe for target 'sub-src-make_first' failed
    make: *** [sub-src-make_first] Error 2
    philippe@linux-PhA:~/raspi/qtwebengine>

    Anybody can help me ?
    Many thanks.



  • Hi Trom,

    there was a patch to make chromium compile with clang supporting different assembler instructions. A bad but working hack is to change all occurrences of ldrhcs to ldrcsh in qt5/qtwebengine/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/arm/vp56_arith.h. Also if you like to use pepper plugins (for example you can extract a recent flash pepper plugin from a chromebook arm image) change enable_plugins=1 in qt5/qtwebengine/src/core/config/embedded_linux.pri


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.