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

Qt Cross Compile Library Path for Raspberry pi 3



  • Hi,
    I followed instructions in this website for cross compile link and I am able to build succesfully to my Raspberry pi target machine. However, I would like to cross compile with opencv, wiring pi and, raspicam c++ libraries. Before cross compile I already installed these libraries on raspberry pi, to understand cross compiling procedure with libraries I just tried and build an app with opencv library and I could not make it work. While setuping cross compile, I can reach the needed libraries in sysroot folder(raspi/sysroot/usr/include/opencv or opencv2) which were transferred from raspberry pi to my local machine. in .pro file I showed this folder path as in the picture:

    INCLUDEPATH += /home/nehir-arda/raspi/sysroot/usr/include/opencv
    INCLUDEPATH += /home/nehir-arda/raspi/sysroot/usr/include/opencv2
    #LIBS += -L/usr/local/lib -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_videoio -lopencv_imgcodecs -lopencv_features2d
    LIBS += -L/home/nehir-arda/raspi/sysroot/usr/lib/arm-linux-gnueabihf -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_videoio -lopencv_imgcodecs -lopencv_features2d

    But, when I try to build it gives my error which says cannot find opencv libraries. What might be the problem?

    Thank you for any suggestions.


  • Qt Champions 2019

    @qtross Libs are usually NOT inside include directories! It should be /home/.../usr/lib



  • @jsulm Thanks for the reply, I changed the path and, I have now this warning;

    0_1564382180216_screen2.png

    Before cross compile, I already had opencv installed on my local machine and I still have. Though, missing file exists in sysroot/usr/lib folder, do you think that having another opencv library on local machine cause that warning? Because, after cross compile, I did not symmlink transferred libraries on my local machine.
    Thanks


  • Qt Champions 2019

    @qtross Please do not post screen-shots, post text!
    How did you configure your Kit? You should set the sysroot.

    "Before cross compile, I already had opencv installed on my local machine and I still have. Though, missing file exists in sysroot/usr/lib folder, do you think that having another opencv library on local machine cause that warning?" - this is not how cross compiling works. It doesn't matter what you installed on your host machine. What matters is what is in your sysroot.



  • @jsulm said in Qt Cross Compile Library Path for Raspberry pi 3:

    /home/nehir-arda/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: warning: libblas.so.3, needed by /home/nehir-arda/raspi/sysroot/usr/lib/libarmadillo.so.9, not found (try using -rpath or -rpath-link)
    /home/nehir-arda/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: warning: liblapack.so.3, needed by /home/nehir-arda/raspi/sysroot/usr/lib/libarmadillo.so.9, not found (try using -rpath or -rpath-link)

    Sorry about it, this is text version of my warning. My local machine name is :nehir-arda. I showed as local in first picture, but I corrected while I was building.

    It says libarmadillo.so.9 and libblass.so.3 are missing but I can find them in the same folder that gives error.

    And my sysroot path :

    /home/nehir-arda/raspi/sysroot


  • Qt Champions 2019

    @qtross said in Qt Cross Compile Library Path for Raspberry pi 3:

    It says libarmadillo.so.9 and libblass.so.3 are missing but I can find them in the same folder that gives error.

    In your sysroot?



  • @jsulm

    Yes I can find libarmadillo.so.9 and libblass.so.3 in this folder

    /home/nehir-arda/raspi/sysroot/usr/lib


  • Qt Champions 2019

    @qtross libblas.so.3 and liblapack.so.3 are not found actually, so are those two in your sysroot?



  • @jsulm Yes i can find them but their folder is different:

    /home/nehir-arda/raspi/sysroot/usr/lib/arm-linux-gnueabihf

    I changed the path with the one above and could not build again.


  • Qt Champions 2019

    @qtross How did you create the sysroot?



  • @jsulm I created with these commands:

    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

    I changed raspberrypi.local with my raspberry pi adress.

    And symlink with these commands:

    wget https://raw.githubusercontent.com/Kukkimonsuta/rpi-buildqt/master/scripts/utils/sysroot-relativelinks.py
    chmod +x sysroot-relativelinks.py
    ./sysroot-relativelinks.py sysroot



  • @qtross dear, i am facing the same error. Have you resolved it?


Log in to reply