Solved 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/RaspberryPi2EGLFSsuccessful 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
-
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
, wherelibz.so.1.2.8
is located. Thanks for your help. -
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.