Raspberry Pi 3: debug info, how to fix?
-
@jsulm
I reconfigure and reinstall the QT,and find the opengl related files in the source qtbase ,
I also find the libQt5OpenGL.so after reinstall. I will retry the project later. thank you for your informs. -
@jsulm
i have check the files , both ligQt5OpenGL.so and libQt5Multimedia.so exists,
and the build output is still:
/home/tong/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/../lib/gcc/arm-linux-gnueabihf/4.8.3/../../../../arm-linux-gnueabihf/bin/ld: skipping incompatible /usr/lib/libpthread.so when searching for -lpthread
/home/tong/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/../lib/gcc/arm-linux-gnueabihf/4.8.3/../../../../arm-linux-gnueabihf/bin/ld: skipping incompatible /usr/lib/libm.so when searching for -lm
/home/tong/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/../lib/gcc/arm-linux-gnueabihf/4.8.3/../../../../arm-linux-gnueabihf/bin/ld: skipping incompatible /usr/lib/libc.so when searching for -lc
/home/tong/raspi/qt5pi/lib/libQt5MultimediaWidgets.so: undefined reference toQGLContext::currentContext()@Qt_5' /home/tong/raspi/qt5pi/lib/libQt5MultimediaWidgets.so: undefined reference to
QGLShaderProgram::setAttributeArray(char const*, float const*, int, int)@Qt_5'
/home/tong/raspi/qt5pi/lib/libQt5MultimediaWidgets.so: undefined reference toQGLShaderProgram::hasOpenGLShaderPrograms(QGLContext const*)@Qt_5' /home/tong/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libQt5OpenGL.so.5: undefined reference to
QStaticTextItem::setFontEngine(QFontEngine*)'
/home/tong/raspi/qt5pi/lib/libQt5MultimediaWidgets.so: undefined reference toQGLShaderProgram::addShaderFromSourceCode(QFlags<QGLShader::ShaderTypeBit>, char const*)@Qt_5' /home/tong/raspi/qt5pi/lib/libQt5MultimediaWidgets.so: undefined reference to
QGLContext::contextHandle() const@Qt_5'
/home/tong/raspi/qt5pi/lib/libQt5MultimediaWidgets.so: undefined reference toQGLShaderProgram::removeAllShaders()@Qt_5' /home/tong/raspi/qt5pi/lib/libQt5MultimediaWidgets.so: undefined reference to
QGLShaderProgram::enableAttributeArray(char const*)@Qt_5'
/home/tong/raspi/qt5pi/lib/libQt5MultimediaWidgets.so: undefined reference toQGLShaderProgram::link()@Qt_5' /home/tong/raspi/qt5pi/lib/libQt5MultimediaWidgets.so: undefined reference to
QGLShaderProgram::QGLShaderProgram(QGLContext const*, QObject*)@Qt_5'
/home/tong/raspi/qt5pi/lib/libQt5MultimediaWidgets.so: undefined reference toQGLShaderProgram::release()@Qt_5' /home/tong/raspi/qt5pi/lib/libQt5MultimediaWidgets.so: undefined reference to
QGLShaderProgram::setUniformValue(char const*, QMatrix4x4 const&)@Qt_5'
/home/tong/raspi/sysroot/usr/lib/libactivemq-cpp.so: undefined reference tostd::__throw_out_of_range_fmt(char const*, ...)@GLIBCXX_3.4.20' /home/tong/raspi/qt5pi/lib/libQt5MultimediaWidgets.so: undefined reference to
QGLShaderProgram::~QGLShaderProgram()@Qt_5'
/home/tong/raspi/qt5pi/lib/libQt5MultimediaWidgets.so: undefined reference toQGLShaderProgram::log() const@Qt_5' /home/tong/raspi/qt5pi/lib/libQt5MultimediaWidgets.so: undefined reference to
QGLShaderProgram::setUniformValue(char const*, float const (*) [4])@Qt_5'
/home/tong/raspi/qt5pi/lib/libQt5MultimediaWidgets.so: undefined reference toQGLShaderProgram::setUniformValue(char const*, int)@Qt_5' /home/tong/raspi/qt5pi/lib/libQt5MultimediaWidgets.so: undefined reference to
QGLShaderProgram::bind()@Qt_5'
collect2: error: ld returned 1 exit status
make: *** [FMT] Error 1
20:57:20: The process "/usr/bin/make" exited with code 2.
Error while building/deploying project FMT (kit: rpi3)
The kit rpi3 has configuration issues which might be the root cause for this problem.
When executing step "Make" -
@JiujiuTong said in Qt on rpi3 , debug info ,how to fix?:
@jsulm
i have check the files , both ligQt5OpenGL.so and libQt5Multimedia.so exists,
and the build output is still:
/home/tong/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/../lib/gcc/arm-linux-gnueabihf/4.8.3/../../../../arm-linux-gnueabihf/bin/ld: skipping incompatible /usr/lib/libpthread.so when searching for -lpthread
/home/tong/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/../lib/gcc/arm-linux-gnueabihf/4.8.3/../../../../arm-linux-gnueabihf/bin/ld: skipping incompatible /usr/lib/libm.so when searching for -lm
/home/tong/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/../lib/gcc/arm-linux-gnueabihf/4.8.3/../../../../arm-linux-gnueabihf/bin/ld: skipping incompatible /usr/lib/libc.so when searching for -lc
/home/tong/raspi/qt5pi/lib/libQt5MultimediaWidgets.so: undefined reference toQGLContext::currentContext()@Qt_5' /home/tong/raspi/qt5pi/lib/libQt5MultimediaWidgets.so: undefined reference to
QGLShaderProgram::setAttributeArray(char const*, float const*, int, int)@Qt_5'
/home/tong/raspi/qt5pi/lib/libQt5MultimediaWidgets.so: undefined reference toQGLShaderProgram::hasOpenGLShaderPrograms(QGLContext const*)@Qt_5' /home/tong/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libQt5OpenGL.so.5: undefined reference to
QStaticTextItem::setFontEngine(QFontEngine*)'
/home/tong/raspi/qt5pi/lib/libQt5MultimediaWidgets.so: undefined reference toQGLShaderProgram::addShaderFromSourceCode(QFlags<QGLShader::ShaderTypeBit>, char const*)@Qt_5' /home/tong/raspi/qt5pi/lib/libQt5MultimediaWidgets.so: undefined reference to
QGLContext::contextHandle() const@Qt_5'
/home/tong/raspi/qt5pi/lib/libQt5MultimediaWidgets.so: undefined reference toQGLShaderProgram::removeAllShaders()@Qt_5' /home/tong/raspi/qt5pi/lib/libQt5MultimediaWidgets.so: undefined reference to
QGLShaderProgram::enableAttributeArray(char const*)@Qt_5'
/home/tong/raspi/qt5pi/lib/libQt5MultimediaWidgets.so: undefined reference toQGLShaderProgram::link()@Qt_5' /home/tong/raspi/qt5pi/lib/libQt5MultimediaWidgets.so: undefined reference to
QGLShaderProgram::QGLShaderProgram(QGLContext const*, QObject*)@Qt_5'
/home/tong/raspi/qt5pi/lib/libQt5MultimediaWidgets.so: undefined reference toQGLShaderProgram::release()@Qt_5' /home/tong/raspi/qt5pi/lib/libQt5MultimediaWidgets.so: undefined reference to
QGLShaderProgram::setUniformValue(char const*, QMatrix4x4 const&)@Qt_5'
/home/tong/raspi/sysroot/usr/lib/libactivemq-cpp.so: undefined reference tostd::__throw_out_of_range_fmt(char const*, ...)@GLIBCXX_3.4.20' /home/tong/raspi/qt5pi/lib/libQt5MultimediaWidgets.so: undefined reference to
QGLShaderProgram::~QGLShaderProgram()@Qt_5'
/home/tong/raspi/qt5pi/lib/libQt5MultimediaWidgets.so: undefined reference toQGLShaderProgram::log() const@Qt_5' /home/tong/raspi/qt5pi/lib/libQt5MultimediaWidgets.so: undefined reference to
QGLShaderProgram::setUniformValue(char const*, float const (*) [4])@Qt_5'
/home/tong/raspi/qt5pi/lib/libQt5MultimediaWidgets.so: undefined reference toQGLShaderProgram::setUniformValue(char const*, int)@Qt_5' /home/tong/raspi/qt5pi/lib/libQt5MultimediaWidgets.so: undefined reference to
QGLShaderProgram::bind()@Qt_5'
collect2: error: ld returned 1 exit status
make: *** [FMT] Error 1
20:57:20: The process "/usr/bin/make" exited with code 2.
Error while building/deploying project FMT (kit: rpi3)
The kit rpi3 has configuration issues which might be the root cause for this problem.
When executing step "Make"
@jsulm ,do you have any ideas? thank you ! -
@JiujiuTong said in Qt on rpi3 , debug info ,how to fix?:
skipping incompatible /usr/lib/libpthread.so
You are linking against x86 libraries installed in your host machine! You need to link against libraries for your target device since you're cross-compiling.
-
@jsulm
my host machine is x64 , i don't kown what to do.
can you tell me how to link it please? i'm following the instructures descripted by :
http://wiki.qt.io/RaspberryPi2EGLFS
can you give me some instructions please!,thank you very much -
@JiujiuTong How are you building? Can you show your configure call? Does your sysroot contain all needed libraries?
-
@jsulm
i,m using cross compile,and my configure is :
./configure -release -opengl es2 -skip webengine -device linux-rasp-pi2-g++
-device-option CROSS_COMPILE=~/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-
-sysroot ~/raspi/sysroot -opensource -confirm-license -make libs
-prefix /usr/local/qt5pi -extprefix ~/raspi/qt5pi -hostprefix ~/raspi/qt5 -vand i sysroot all the directory under raspi with "./sysroot-relativelinks.py sysroot"
-
@JiujiuTong said in Qt on rpi3 , debug info ,how to fix?:
~/raspi/sysroot
Did you check that your sysroot really contains what is needed (for example ~/raspi/sysroot/usr/lib)?
-
@jsulm
i really don't know what libs are needed, so i do not check the Dir, the folder is created by :
mkdir sysroot sysroot/usr sysroot/opt
rsync -avz pi@raspberrypi.local:/lib sysroot
rsync -avz pi@raspberrypi.local:/usr/include sysroot/usr
rsync -avz pi@raspberrypi.local:/usr/lib sysroot/usr
rsync -avz pi@raspberrypi.local:/opt/vc sysroot/opt
and i checked that the output is right with no error. -
@JiujiuTong Maybe you should try to call configure from a clean Qt source directory? Did you try to build Qt before for x86? Even better would be to do out of source build see http://stackoverflow.com/questions/1245011/how-to-build-qt-out-of-source
-
@JiujiuTong What I mean with this "Did you try to build Qt before for x86?" is - did you build for x86 OR x86_64 before from the SAME source code tree? Because currently you're linking against your host libraries.
-
@crasskitty
sorry , i don't understand what's your meanings -
I dont´t know if you still have the debugging problem but to answer to your first post:
The qt libraries for rpi are written to the
qt5pi
directory, outside of the rsynced sysroot.
The debugger is looking in the local sysroot directory for the libraries if you debug remote targets.
So just tell gdb to load the libraries of your project from the debugging target.
In Qt Creator go to Options->Debugger GDB-Tab an insertset sysroot target:/
in "Additional Startup Commands" -
@sneubert
thank you for your answer!
should I just insert "set sysroot target:/" in "Additional Startup Commands" or replace string with my ENV value?
I can understand you description, but confused with "set sysroot target:/" i have set sysroot to "/home/tong/rasp/sysroot" in build&run -->kits-->sysroot. should the target:/ be the real path or something? thank you very much! -
Leave you sysroot path in build&run --> kit --> sysroot the way it is, because this is needed for building your application. The set sysroot command I told you is just for gdb to instruct loading libraries remote. Use the exact string
set sysroot target:/
only for "Additional Startup Commands" in Options->Debugger GDB-Tab. -
@SSGaist
can you help me out of this problem? thank you!
@jsulm
i have check the files , both ligQt5OpenGL.so and libQt5Multimedia.so exists,
and the build output is still:
/home/tong/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/../lib/gcc/arm-linux-gnueabihf/4.8.3/../../../../arm-linux-gnueabihf/bin/ld: skipping incompatible /usr/lib/libpthread.so when searching for -lpthread
/home/tong/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/../lib/gcc/arm-linux-gnueabihf/4.8.3/../../../../arm-linux-gnueabihf/bin/ld: skipping incompatible /usr/lib/libm.so when searching for -lm
/home/tong/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/../lib/gcc/arm-linux-gnueabihf/4.8.3/../../../../arm-linux-gnueabihf/bin/ld: skipping incompatible /usr/lib/libc.so when searching for -lc
/home/tong/raspi/qt5pi/lib/libQt5MultimediaWidgets.so: undefined reference to QGLContext::currentContext()@Qt_5' /home/tong/raspi/qt5pi/lib/libQt5MultimediaWidgets.so: undefined reference toQGLShaderProgram::setAttributeArray(char const*, float const*, int, int)@Qt_5'
/home/tong/raspi/qt5pi/lib/libQt5MultimediaWidgets.so: undefined reference to QGLShaderProgram::hasOpenGLShaderPrograms(QGLContext const*)@Qt_5' /home/tong/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libQt5OpenGL.so.5: undefined reference toQStaticTextItem::setFontEngine(QFontEngine*)'
/home/tong/raspi/qt5pi/lib/libQt5MultimediaWidgets.so: undefined reference to QGLShaderProgram::addShaderFromSourceCode(QFlagsQGLShader::ShaderTypeBit, char const*)@Qt_5' /home/tong/raspi/qt5pi/lib/libQt5MultimediaWidgets.so: undefined reference toQGLContext::contextHandle() const@Qt_5'
/home/tong/raspi/qt5pi/lib/libQt5MultimediaWidgets.so: undefined reference to QGLShaderProgram::removeAllShaders()@Qt_5' /home/tong/raspi/qt5pi/lib/libQt5MultimediaWidgets.so: undefined reference toQGLShaderProgram::enableAttributeArray(char const*)@Qt_5'
/home/tong/raspi/qt5pi/lib/libQt5MultimediaWidgets.so: undefined reference to QGLShaderProgram::link()@Qt_5' /home/tong/raspi/qt5pi/lib/libQt5MultimediaWidgets.so: undefined reference toQGLShaderProgram::QGLShaderProgram(QGLContext const*, QObject*)@Qt_5'
/home/tong/raspi/qt5pi/lib/libQt5MultimediaWidgets.so: undefined reference to QGLShaderProgram::release()@Qt_5' /home/tong/raspi/qt5pi/lib/libQt5MultimediaWidgets.so: undefined reference toQGLShaderProgram::setUniformValue(char const*, QMatrix4x4 const&)@Qt_5'
/home/tong/raspi/sysroot/usr/lib/libactivemq-cpp.so: undefined reference to std::__throw_out_of_range_fmt(char const*, ...)@GLIBCXX_3.4.20' /home/tong/raspi/qt5pi/lib/libQt5MultimediaWidgets.so: undefined reference toQGLShaderProgram::~QGLShaderProgram()@Qt_5'
/home/tong/raspi/qt5pi/lib/libQt5MultimediaWidgets.so: undefined reference to QGLShaderProgram::log() const@Qt_5' /home/tong/raspi/qt5pi/lib/libQt5MultimediaWidgets.so: undefined reference toQGLShaderProgram::setUniformValue(char const*, float const () [4])@Qt_5'
/home/tong/raspi/qt5pi/lib/libQt5MultimediaWidgets.so: undefined reference to QGLShaderProgram::setUniformValue(char const, int)@Qt_5' /home/tong/raspi/qt5pi/lib/libQt5MultimediaWidgets.so: undefined reference toQGLShaderProgram::bind()@Qt_5'
collect2: error: ld returned 1 exit status -
@JiujiuTong As I said "skipping incompatible" message means that the library is build for a different architecture. You're most probably mixing architectures.
/usr/lib/libpthread.so - this looks like a path on your host PC. You cannot use libraries from your host PC (X86_64) to cross compile for ARM.