Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

RaspberryPi2EGLFS cross compile - libQt5Core.so.5.6.0 Error 1



  • Hi,
    I am trying to compile QT by cross-compile by follow this tutorial.
    https://wiki.qt.io/RaspberryPi2EGLFS

    successful run configure by running this command.

    ./configure -release -opengl es2 -device linux-rasp-pi2-g++ -device-option CROSS_COMPILE=~/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf- -sysroot ~/raspi/sysroot -opensource -confirm-license -no-xcb -make libs -prefix /usr/local/qt5pi -extprefix ~/raspi/qt5pi -hostprefix ~/raspi/qt5 -v
    

    a problem occurs when i run make command, provide the full stack from the first error.

    /home/daywong/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/../lib/gcc/arm-linux-gnueabihf/4.8.3/../../../../arm-linux-gnueabihf/bin/ld.gold: error: cannot open /home/daywong/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libz.so: No such file or directory
    /home/daywong/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/../lib/gcc/arm-linux-gnueabihf/4.8.3/../../../../arm-linux-gnueabihf/bin/ld.gold: error: cannot open /home/daywong/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libglib-2.0.so: No such file or directory
    /home/daywong/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/../lib/gcc/arm-linux-gnueabihf/4.8.3/../../../../arm-linux-gnueabihf/bin/ld.gold: error: cannot open /home/daywong/raspi/sysroot/usr/lib/arm-linux-gnueabihf/librt.so: No such file or directory
    /home/daywong/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/../lib/gcc/arm-linux-gnueabihf/4.8.3/../../../../arm-linux-gnueabihf/bin/ld.gold: error: cannot open /home/daywong/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libm.so: No such file or directory
    .obj/qbytearray.o:qbytearray.cpp:function qUncompress(unsigned char const*, int): error: undefined reference to 'uncompress'
    .obj/qbytearray.o:qbytearray.cpp:function qCompress(unsigned char const*, int, int): error: undefined reference to 'compress2'
    .obj/qdatetime.o:qdatetime.cpp:function fromIsoTimeString(QStringRef const&, Qt::DateFormat, bool*): error: undefined reference to 'pow'
    .obj/qdatetime.o:qdatetime.cpp:function fromIsoTimeString(QStringRef const&, Qt::DateFormat, bool*): error: undefined reference to 'floorf'
    .obj/qdatetime.o:qdatetime.cpp:function fromIsoTimeString(QStringRef const&, Qt::DateFormat, bool*): error: undefined reference to 'pow'
    .obj/qeasingcurve.o:qeasingcurve.cpp:function easeCosineCurve(double): error: undefined reference to 'cos'
    .obj/qeasingcurve.o:qeasingcurve.cpp:function easeInOutSine(double): error: undefined reference to 'cos'
    .obj/qeasingcurve.o:qeasingcurve.cpp:function easeSineCurve(double): error: undefined reference to 'sin'
    .obj/qeasingcurve.o:qeasingcurve.cpp:function easeOutSine(double): error: undefined reference to 'sin'
    .obj/qeasingcurve.o:qeasingcurve.cpp:function easeOutCurve(double): error: undefined reference to 'sin'
    .obj/qeasingcurve.o:qeasingcurve.cpp:function easeInOutCirc(double): error: undefined reference to 'sqrt'
    .obj/qeasingcurve.o:qeasingcurve.cpp:function easeInOutCirc(double): error: undefined reference to 'sqrt'
    .obj/qeasingcurve.o:qeasingcurve.cpp:function easeOutCirc(double): error: undefined reference to 'sqrt'
    .obj/qeasingcurve.o:qeasingcurve.cpp:function easeInCirc(double): error: undefined reference to 'sqrt'
    .obj/qeasingcurve.o:qeasingcurve.cpp:function easeOutInSine(double): error: undefined reference to 'cos'
    .obj/qeasingcurve.o:qeasingcurve.cpp:function easeOutInSine(double): error: undefined reference to 'sin'
    .obj/qeasingcurve.o:qeasingcurve.cpp:function easeInOutExpo(double): error: undefined reference to 'pow'
    .obj/qeasingcurve.o:qeasingcurve.cpp:function easeInOutExpo(double): error: undefined reference to 'pow'
    .obj/qeasingcurve.o:qeasingcurve.cpp:function easeInSine(double): error: undefined reference to 'cos'
    .obj/qeasingcurve.o:qeasingcurve.cpp:function ElasticEase::value(double): error: undefined reference to 'asin'
    .obj/qeasingcurve.o:qeasingcurve.cpp:function ElasticEase::value(double): error: undefined reference to 'asin'
    .obj/qeasingcurve.o:qeasingcurve.cpp:function ElasticEase::value(double): error: undefined reference to 'asin'
    .obj/qeasingcurve.o:qeasingcurve.cpp:function ElasticEase::value(double): error: undefined reference to 'asin'
    .obj/qline.o:qline.cpp:function QLineF::angle() const: error: undefined reference to 'atan2'
    .obj/qline.o:qline.cpp:function QLineF::setAngle(double): error: undefined reference to 'sincos'
    .obj/qline.o:qline.cpp:function QLineF::fromPolar(double, double): error: undefined reference to 'sincos'
    .obj/qline.o:qline.cpp:function QLineF::angle(QLineF const&) const: error: undefined reference to 'acos'
    .obj/qlocale_tools.o:qlocale_tools.cpp:function qdtoa(double, int, int, int*, int*, char**, char**): error: undefined reference to 'feholdexcept'
    .obj/qlocale_tools.o:qlocale_tools.cpp:function qdtoa(double, int, int, int*, int*, char**, char**): error: undefined reference to 'fesetenv'
    .obj/qrect.o:qrect.cpp:function QRectF::toAlignedRect() const: error: undefined reference to 'floor'
    .obj/qrect.o:qrect.cpp:function QRectF::toAlignedRect() const: error: undefined reference to 'ceil'
    .obj/qrect.o:qrect.cpp:function QRectF::toAlignedRect() const: error: undefined reference to 'floor'
    .obj/qrect.o:qrect.cpp:function QRectF::toAlignedRect() const: error: undefined reference to 'ceil'
    .obj/qtimeline.o:qtimeline.cpp:function QTimeLine::frameForTime(int) const: error: undefined reference to 'ceil'
    .obj/qeventdispatcher_glib.o:qeventdispatcher_glib.cpp:function QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>): error: undefined reference to 'g_main_context_iteration'
    .obj/qeventdispatcher_glib.o:qeventdispatcher_glib.cpp:function QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>): error: undefined reference to 'g_main_context_iteration'
    .obj/qeventdispatcher_glib.o:qeventdispatcher_glib.cpp:function QEventDispatcherGlib::hasPendingEvents(): error: undefined reference to 'g_main_context_pending'
    .obj/qeventdispatcher_glib.o:qeventdispatcher_glib.cpp:function QEventDispatcherGlib::wakeUp(): error: undefined reference to 'g_main_context_wakeup'
    .obj/qeventdispatcher_glib.o:qeventdispatcher_glib.cpp:function QEventDispatcherGlib::unregisterSocketNotifier(QSocketNotifier*): error: undefined reference to 'g_source_remove_poll'
    .obj/qeventdispatcher_glib.o:qeventdispatcher_glib.cpp:function QEventDispatcherGlib::unregisterSocketNotifier(QSocketNotifier*): error: undefined reference to 'g_source_remove_poll'
    .obj/qeventdispatcher_glib.o:qeventdispatcher_glib.cpp:function QEventDispatcherGlib::~QEventDispatcherGlib(): error: undefined reference to 'g_source_destroy'
    .obj/qeventdispatcher_glib.o:qeventdispatcher_glib.cpp:function QEventDispatcherGlib::~QEventDispatcherGlib(): error: undefined reference to 'g_source_unref'
    .obj/qeventdispatcher_glib.o:qeventdispatcher_glib.cpp:function QEventDispatcherGlib::~QEventDispatcherGlib(): error: undefined reference to 'g_source_destroy'
    .obj/qeventdispatcher_glib.o:qeventdispatcher_glib.cpp:function QEventDispatcherGlib::~QEventDispatcherGlib(): error: undefined reference to 'g_source_unref'
    .obj/qeventdispatcher_glib.o:qeventdispatcher_glib.cpp:function QEventDispatcherGlib::~QEventDispatcherGlib(): error: undefined reference to 'g_source_remove_poll'
    .obj/qeventdispatcher_glib.o:qeventdispatcher_glib.cpp:function QEventDispatcherGlib::~QEventDispatcherGlib(): error: undefined reference to 'g_source_destroy'
    .obj/qeventdispatcher_glib.o:qeventdispatcher_glib.cpp:function QEventDispatcherGlib::~QEventDispatcherGlib(): error: undefined reference to 'g_source_unref'
    .obj/qeventdispatcher_glib.o:qeventdispatcher_glib.cpp:function QEventDispatcherGlib::~QEventDispatcherGlib(): error: undefined reference to 'g_source_destroy'
    .obj/qeventdispatcher_glib.o:qeventdispatcher_glib.cpp:function QEventDispatcherGlib::~QEventDispatcherGlib(): error: undefined reference to 'g_source_unref'
    .obj/qeventdispatcher_glib.o:qeventdispatcher_glib.cpp:function QEventDispatcherGlib::~QEventDispatcherGlib(): error: undefined reference to 'g_main_context_pop_thread_default'
    .obj/qeventdispatcher_glib.o:qeventdispatcher_glib.cpp:function QEventDispatcherGlib::~QEventDispatcherGlib(): error: undefined reference to 'g_main_context_unref'
    .obj/qeventdispatcher_glib.o:qeventdispatcher_glib.cpp:function QEventDispatcherGlibPrivate::QEventDispatcherGlibPrivate(_GMainContext*): error: undefined reference to 'g_main_context_ref'
    .obj/qeventdispatcher_glib.o:qeventdispatcher_glib.cpp:function QEventDispatcherGlibPrivate::QEventDispatcherGlibPrivate(_GMainContext*): error: undefined reference to 'g_main_context_push_thread_default'
    .obj/qeventdispatcher_glib.o:qeventdispatcher_glib.cpp:function QEventDispatcherGlibPrivate::QEventDispatcherGlibPrivate(_GMainContext*): error: undefined reference to 'g_source_new'
    .obj/qeventdispatcher_glib.o:qeventdispatcher_glib.cpp:function QEventDispatcherGlibPrivate::QEventDispatcherGlibPrivate(_GMainContext*): error: undefined reference to 'g_source_set_can_recurse'
    .obj/qeventdispatcher_glib.o:qeventdispatcher_glib.cpp:function QEventDispatcherGlibPrivate::QEventDispatcherGlibPrivate(_GMainContext*): error: undefined reference to 'g_source_attach'
    .obj/qeventdispatcher_glib.o:qeventdispatcher_glib.cpp:function QEventDispatcherGlibPrivate::QEventDispatcherGlibPrivate(_GMainContext*): error: undefined reference to 'g_source_new'
    .obj/qeventdispatcher_glib.o:qeventdispatcher_glib.cpp:function QEventDispatcherGlibPrivate::QEventDispatcherGlibPrivate(_GMainContext*): error: undefined reference to 'g_source_set_can_recurse'
    .obj/qeventdispatcher_glib.o:qeventdispatcher_glib.cpp:function QEventDispatcherGlibPrivate::QEventDispatcherGlibPrivate(_GMainContext*): error: undefined reference to 'g_source_attach'
    .obj/qeventdispatcher_glib.o:qeventdispatcher_glib.cpp:function QEventDispatcherGlibPrivate::QEventDispatcherGlibPrivate(_GMainContext*): error: undefined reference to 'g_source_new'
    .obj/qeventdispatcher_glib.o:qeventdispatcher_glib.cpp:function QEventDispatcherGlibPrivate::QEventDispatcherGlibPrivate(_GMainContext*): error: undefined reference to 'g_source_set_can_recurse'
    .obj/qeventdispatcher_glib.o:qeventdispatcher_glib.cpp:function QEventDispatcherGlibPrivate::QEventDispatcherGlibPrivate(_GMainContext*): error: undefined reference to 'g_source_attach'
    .obj/qeventdispatcher_glib.o:qeventdispatcher_glib.cpp:function QEventDispatcherGlibPrivate::QEventDispatcherGlibPrivate(_GMainContext*): error: undefined reference to 'g_source_new'
    .obj/qeventdispatcher_glib.o:qeventdispatcher_glib.cpp:function QEventDispatcherGlibPrivate::QEventDispatcherGlibPrivate(_GMainContext*): error: undefined reference to 'g_source_set_can_recurse'
    .obj/qeventdispatcher_glib.o:qeventdispatcher_glib.cpp:function QEventDispatcherGlibPrivate::QEventDispatcherGlibPrivate(_GMainContext*): error: undefined reference to 'g_source_set_priority'
    .obj/qeventdispatcher_glib.o:qeventdispatcher_glib.cpp:function QEventDispatcherGlibPrivate::QEventDispatcherGlibPrivate(_GMainContext*): error: undefined reference to 'g_source_attach'
    .obj/qeventdispatcher_glib.o:qeventdispatcher_glib.cpp:function QEventDispatcherGlibPrivate::QEventDispatcherGlibPrivate(_GMainContext*): error: undefined reference to 'g_main_context_new'
    .obj/qeventdispatcher_glib.o:qeventdispatcher_glib.cpp:function QEventDispatcherGlibPrivate::QEventDispatcherGlibPrivate(_GMainContext*): error: undefined reference to 'g_main_context_default'
    .obj/qeventdispatcher_glib.o:qeventdispatcher_glib.cpp:function QEventDispatcherGlibPrivate::QEventDispatcherGlibPrivate(_GMainContext*): error: undefined reference to 'g_main_context_ref'
    .obj/qeventdispatcher_glib.o:qeventdispatcher_glib.cpp:function QEventDispatcherGlib::registerSocketNotifier(QSocketNotifier*): error: undefined reference to 'g_source_add_poll'
    collect2: error: ld returned 1 exit status
    make[2]: *** [../../lib/libQt5Core.so.5.6.0] Error 1
    make[2]: Leaving directory `/home/daywong/raspi/qtbase/src/corelib'
    make[1]: *** [sub-corelib-make_first] Error 2
    make[1]: Leaving directory `/home/daywong/raspi/qtbase/src'
    make: *** [sub-src-make_first] Error 2
    
    

    verified arm-linux-gnueabihf/libz.so is exist

    $ls ~/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libz.so -alh
    lrwxrwxrwx 1 daywong daywong 38 Jan 17 20:54 /home/daywong/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libz.so -> /lib/arm-linux-gnueabihf/libz.so.1.2.8
    
    

  • Lifetime Qt Champion

    Hi,

    That file is a symbolic link. Do you really have libz in /lib/arm-linux-gnueabihf/ ?



  • @SGaist
    Hi SGaist,
    You are right. libz.so.1.2.8 was not exist by the symbolic link. Just created another symbolic link to /lib/x86_64-linux-gnu , where libz.so.1.2.8 is located. Thanks for your help.


  • Lifetime Qt Champion

    That's the wrong thing to do, now you are trying to link to a library of the wrong architecture. You can't mix ARM and x86_64 libraries.

    IIRC, there's a script to cleanup the links of the sysroot so that they can be used properly by the linker.


Log in to reply