Issues encountered when cross-compiling ARM64 qmake on the x86 platform.
-
Hello,
I want to build a qt5.12.4 for arm64(embedded system) in ubuntu18.04. when I excute "make -j3", error logs are below:
.obj/qimage.o: In function QImage::fill(unsigned int)': qimage.cpp:(.text+0x57e8): undefined reference to qt_memfill32(unsigned int*, unsigned int, int)'
qimage.cpp:(.text+0x58f0): undefined reference to qt_memfill16(unsigned short*, unsigned short, int)' qimage.cpp:(.text+0x5abb): undefined reference to qt_memfill32(unsigned int*, unsigned int, int)'
qimage.cpp:(.text+0x5ada): undefined reference to qt_memfill16(unsigned short*, unsigned short, int)' .obj/qdrawhelper.o: In function void qt_bitmapblit_template<unsigned int>(QRasterBuffer*, int, int, unsigned int, unsigned char const*, int, int, int)':
qdrawhelper.cpp:(.text+0x11de6): undefined reference to qt_memfill32(unsigned int*, unsigned int, int)' qdrawhelper.cpp:(.text+0x11e67): undefined reference to qt_memfill32(unsigned int*, unsigned int, int)'
qdrawhelper.cpp:(.text+0x11ea3): undefined reference to qt_memfill32(unsigned int*, unsigned int, int)' qdrawhelper.cpp:(.text+0x11f0b): undefined reference to qt_memfill32(unsigned int*, unsigned int, int)'
qdrawhelper.cpp:(.text+0x11f4c): undefined reference to qt_memfill32(unsigned int*, unsigned int, int)' .obj/qdrawhelper.o:qdrawhelper.cpp:(.text+0x11f9b): more undefined references to qt_memfill32(unsigned int*, unsigned int, int)' follow
.obj/qdrawhelper.o: In function qt_bitmapblit_quint16(QRasterBuffer*, int, int, QRgba64 const&, unsigned char const*, int, int, int)': qdrawhelper.cpp:(.text+0x18be4): undefined reference to qt_memfill16(unsigned short*, unsigned short, int)'
qdrawhelper.cpp:(.text+0x18c68): undefined reference to qt_memfill16(unsigned short*, unsigned short, int)' qdrawhelper.cpp:(.text+0x18ca4): undefined reference to qt_memfill16(unsigned short*, unsigned short, int)'
qdrawhelper.cpp:(.text+0x18d0b): undefined reference to qt_memfill16(unsigned short*, unsigned short, int)' qdrawhelper.cpp:(.text+0x18d4c): undefined reference to qt_memfill16(unsigned short*, unsigned short, int)'
.obj/qdrawhelper.o:qdrawhelper.cpp:(.text+0x18d9b): more undefined references to qt_memfill16(unsigned short*, unsigned short, int)' follow .obj/qdrawhelper.o: In function qt_fetch_linear_gradient(unsigned int*, Operator const*, QSpanData const*, int, int, int)':
qdrawhelper.cpp:(.text+0x35848): undefined reference to qt_memfill32(unsigned int*, unsigned int, int)' .obj/qdrawhelper.o: In function qt_fetch_radial_gradient_plain(unsigned int*, Operator const*, QSpanData const*, int, int, int)':
qdrawhelper.cpp:(.text+0x366c9): undefined reference to qt_memfill32(unsigned int*, unsigned int, int)' .obj/qdrawhelper.o: In function blend_color_rgb16(int, QT_FT_Span_ const*, void*)':
qdrawhelper.cpp:(.text+0x38fa0): undefined reference to qt_memfill16(unsigned short*, unsigned short, int)' .obj/qdrawhelper.o: In function blend_color_argb(int, QT_FT_Span_ const*, void*)':
qdrawhelper.cpp:(.text+0x395df): undefined reference to qt_memfill32(unsigned int*, unsigned int, int)' .obj/qdrawhelper.o: In function qt_rectfill_rgba(QRasterBuffer*, int, int, int, int, QRgba64 const&)':
qdrawhelper.cpp:(.text+0x39760): undefined reference to qt_memfill32(unsigned int*, unsigned int, int)' .obj/qdrawhelper.o: In function qt_rectfill_quint16(QRasterBuffer*, int, int, int, int, QRgba64 const&)':
qdrawhelper.cpp:(.text+0x39bb0): undefined reference to qt_memfill16(unsigned short*, unsigned short, int)' qdrawhelper.cpp:(.text+0x39bed): undefined reference to qt_memfill16(unsigned short*, unsigned short, int)'
.obj/qdrawhelper.o: In function qt_rectfill_argb32(QRasterBuffer*, int, int, int, int, QRgba64 const&)': qdrawhelper.cpp:(.text+0x39c70): undefined reference to qt_memfill32(unsigned int*, unsigned int, int)'
.obj/qdrawhelper.o: In function qt_rectfill_nonpremul_rgba(QRasterBuffer*, int, int, int, int, QRgba64 const&)': qdrawhelper.cpp:(.text+0x3ab07): undefined reference to qt_memfill32(unsigned int*, unsigned int, int)'
.obj/qdrawhelper.o: In function qt_rectfill_nonpremul_argb32(QRasterBuffer*, int, int, int, int, QRgba64 const&)': qdrawhelper.cpp:(.text+0x3ac10): undefined reference to qt_memfill32(unsigned int*, unsigned int, int)'
.obj/qdrawhelper.o: In function void qt_rectfill_rgb30<(QtPixelOrder)0>(QRasterBuffer*, int, int, int, int, QRgba64 const&)': qdrawhelper.cpp:(.text+0x3ad60): undefined reference to qt_memfill32(unsigned int*, unsigned int, int)'
qdrawhelper.cpp:(.text+0x3ad9d): undefined reference to qt_memfill32(unsigned int*, unsigned int, int)' .obj/qdrawhelper.o:qdrawhelper.cpp:(.text+0x3aec0): more undefined references to qt_memfill32(unsigned int*, unsigned int, int)' follow
.obj/qdrawhelper.o: In function qt_gradient_quint16(int, QT_FT_Span_ const*, void*)': qdrawhelper.cpp:(.text+0x401c5): undefined reference to qt_memfill16(unsigned short*, unsigned short, int)'
.obj/qdrawhelper.o: In function qt_rectfill_rgba(QRasterBuffer*, int, int, int, int, QRgba64 const&)': qdrawhelper.cpp:(.text+0x3979b): undefined reference to qt_memfill32(unsigned int*, unsigned int, int)'
.obj/qdrawhelper.o: In function qt_rectfill_argb32(QRasterBuffer*, int, int, int, int, QRgba64 const&)': qdrawhelper.cpp:(.text+0x39cab): undefined reference to qt_memfill32(unsigned int*, unsigned int, int)'
.obj/qdrawhelper.o: In function qt_rectfill_nonpremul_rgba(QRasterBuffer*, int, int, int, int, QRgba64 const&)': qdrawhelper.cpp:(.text+0x3ab3a): undefined reference to qt_memfill32(unsigned int*, unsigned int, int)'
.obj/qdrawhelper.o: In function qt_rectfill_nonpremul_argb32(QRasterBuffer*, int, int, int, int, QRgba64 const&)': qdrawhelper.cpp:(.text+0x3ac4b): undefined reference to qt_memfill32(unsigned int*, unsigned int, int)'
.obj/qdrawhelper.o: In function _GLOBAL__sub_I_qdrawhelper.cpp': qdrawhelper.cpp:(.text.startup+0xc): undefined reference to qt_bitmapblit32_sse2(QRasterBuffer*, int, int, QRgba64 const&, unsigned char const*, int, int, int)'
qdrawhelper.cpp:(.text.startup+0x13): undefined reference to qt_scale_image_argb32_on_argb32_sse2(unsigned char*, int, unsigned char const*, int, int, QRectF const&, QRectF const&, QRect const&, int)' qdrawhelper.cpp:(.text.startup+0x1a): undefined reference to qt_blend_rgb32_on_rgb32_sse2(unsigned char*, int, unsigned char const*, int, int, int, int)'
qdrawhelper.cpp:(.text.startup+0x36): undefined reference to qt_bitmapblit16_sse2(QRasterBuffer*, int, int, QRgba64 const&, unsigned char const*, int, int, int)' qdrawhelper.cpp:(.text.startup+0x44): undefined reference to qt_bitmapblit8888_sse2(QRasterBuffer*, int, int, QRgba64 const&, unsigned char const*, int, int, int)'
qdrawhelper.cpp:(.text.startup+0x8a): undefined reference to qt_blend_argb32_on_argb32_sse2(unsigned char*, int, unsigned char const*, int, int, int, int)' qdrawhelper.cpp:(.text.startup+0xc9): undefined reference to qt_fetch_radial_gradient_sse2(unsigned int*, Operator const*, QSpanData const*, int, int, int)'
qdrawhelper.cpp:(.text.startup+0xd0): undefined reference to comp_func_SourceOver_sse2(unsigned int*, unsigned int const*, int, unsigned int)' qdrawhelper.cpp:(.text.startup+0xef): undefined reference to comp_func_solid_SourceOver_sse2(unsigned int*, int, unsigned int, unsigned int)'
qdrawhelper.cpp:(.text.startup+0xf9): undefined reference to comp_func_Source_sse2(unsigned int*, unsigned int const*, int, unsigned int)' qdrawhelper.cpp:(.text.startup+0x104): undefined reference to comp_func_Plus_sse2(unsigned int*, unsigned int const*, int, unsigned int)'
.obj/qcompositionfunctions.o: In function rasterop_solid_NotSource(unsigned int*, int, unsigned int, unsigned int)': qcompositionfunctions.cpp:(.text+0x5abf): undefined reference to qt_memfill32(unsigned int*, unsigned int, int)'
.obj/qcompositionfunctions.o: In function comp_func_solid_Clear(unsigned int*, int, unsigned int, unsigned int)': qcompositionfunctions.cpp:(.text+0x5f1d): undefined reference to qt_memfill32(unsigned int*, unsigned int, int)'
.obj/qcompositionfunctions.o: In function comp_func_solid_Source(unsigned int*, int, unsigned int, unsigned int)': qcompositionfunctions.cpp:(.text+0x63dd): undefined reference to qt_memfill32(unsigned int*, unsigned int, int)'
.obj/qcompositionfunctions.o: In function comp_func_solid_SourceOver(unsigned int*, int, unsigned int, unsigned int)': qcompositionfunctions.cpp:(.text+0x68d7): undefined reference to qt_memfill32(unsigned int*, unsigned int, int)'
.obj/qcompositionfunctions.o: In function comp_func_Clear(unsigned int*, unsigned int const*, int, unsigned int)': qcompositionfunctions.cpp:(.text+0x961b): undefined reference to qt_memfill32(unsigned int*, unsigned int, int)'
.obj/qcompositionfunctions.o:qcompositionfunctions.cpp:(.text+0x26196): more undefined references to `qt_memfill32(unsigned int*, unsigned int, int)' follow
collect2: error: ld returned 1 exit status
Makefile:1177: recipe for target '../../lib/libQt5Gui.so.5.12.4' failed
make[3]: *** [../../lib/libQt5Gui.so.5.12.4] Error 1
make[3]: Leaving directory '/home/sy/software/qmake_build/qt-everywhere-src-5.12.4/qtbase/src/gui'
Makefile:554: recipe for target 'sub-gui-make_first' failed
make[2]: *** [sub-gui-make_first] Error 2
make[2]: Leaving directory '/home/sy/software/qmake_build/qt-everywhere-src-5.12.4/qtbase/src'
Makefile:50: recipe for target 'sub-src-make_first' failed
make[1]: *** [sub-src-make_first] Error 2
make[1]: Leaving directory '/home/sy/software/qmake_build/qt-everywhere-src-5.12.4/qtbase'
Makefile:56: recipe for target 'module-qtbase-make_first' failed
make: *** [module-qtbase-make_first] Error 2My configure is:
./configure -v
-opensource
-confirm-license
-shared
-prefix /opt/qt
-release
-opensource
-confirm-license
-device-option CROSS_COMPILE=/opt/toolchain/7.5.0/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
-make libs
-nomake examples
-nomake tests
-nomake tools
-no-use-gold-linker
-optimized-qmake
-pch
-qt-zlib
-qt-libpng
-qt-libjpeg
-qt-freetype
-no-opengl
-no-sse2
-no-openssl
-no-cups
-no-separate-debug-info
-no-iconv
-skip qt3d
-skip qtcanvas3d
-skip qtdatavis3d
-skip qtdoc
-skip qtgamepad
-skip androidextras
-skip qtmacextras
-skip qtnetworkauth
-skip qtpurchasing
-skip qtwayland
-skip qtwinextras
-skip qtx11extras
-skip qtwebchannel
-skip qtwebengine
-skip qtwebsockets
-skip qtwebview
-skip qtsensors
-skip qtscript
-skip qttools
-skip qtconnectivity
-skip qtxmlpatterns
-skip qttranslations
-skip qtspeech
-skip qtsvg
-skip qtscxml \My mkspec is:
qmake configuration for building with aarch64-linux-gnu-g++
MAKEFILE_GENERATOR = UNIX
CONFIG += incremental
QMAKE_INCREMENTAL_STYLE = sublibinclude(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)modifications to g++.conf
QMAKE_CC = /opt/toolchain/7.5.0/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc
QMAKE_CXX = /opt/toolchain/7.5.0/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++
QMAKE_LINK = /opt/toolchain/7.5.0/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++
QMAKE_LINK_SHLIB = /opt/toolchain/7.5.0/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++modifications to linux.conf
QMAKE_AR = /opt/toolchain/7.5.0/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-ar cqs
QMAKE_OBJCOPY = /opt/toolchain/7.5.0/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-objcopy
QMAKE_NM = /opt/toolchain/7.5.0/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-nm -P
QMAKE_STRIP = /opt/toolchain/7.5.0/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-strip
load(qt_config)How can I solve it?