Please nominate your Qt Champions for 2021! https://forum.qt.io/topic/132134/looking-for-the-2021-qt-champions

How do I setup a kit to crosscompile for Raspbian for the Pi3?



  • @sneubert
    Alright, I'll have to try to figure this out. I'm not familiar enough with Qts inner workings as on the desktop, you download Qt Creator, chose your version of Qt, and then your set.



  • I've not been able to get passed this part of the instructions from this link https://wiki.qt.io/RaspberryPi2EGLFS

    git clone git://code.qt.io/qt/qtbase.git -b <qt-version>
    cd qtbase
    ./configure -release -opengl es2 -device <rpi-version> -device-option CROSS_COMPILE=~/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf- -sysroot ~/raspi/sysroot -opensource -confirm-license -make libs -prefix /usr/local/qt5pi -extprefix ~/raspi/qt5pi -hostprefix ~/raspi/qt5 -v
    

    And I modified it to be as so to fit my configuration and run it inside the raspi/qtbase/ directory

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

    It runs for a while, lots of text flying passed the screen, and then it stops, and says it this:

    Project ERROR: Cannot run target compiler '/home/brandon/development/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-g++'. Output:
    ===================
    sh: 1: /home/brandon/development/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-g++: not found
    ===================
    Maybe you forgot to setup the environment?
    
    

    I don't have the compiler, but I don't know why it's missing. I have not had any issues with the instructions up to this point - but since I'm completely baffled by what exactly the instructions are having me do, I don't know how fix this.

    For the record, it's completely maddening how difficult it is to get setup to build for the pi. I don't understand why this is so difficult when Qt makes so easy on everything else.


  • Lifetime Qt Champion

    @graniteDev said in How do I setup a kit to crosscompile for Raspbian for the Pi3?:

    I don't have the compiler, but I don't know why it's missing.

    Huh? Either you have it, or not. In your configure line, you told configure to use the toolchain CROSS_COMPILE=~/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-.

    Did you mean .../usr/bin/arm-linux-gnueabihf- ?

    Or where is your cross-toolchain installed?



  • This post is deleted!

  • Lifetime Qt Champion

    @graniteDev

    You still didn't answer my question:

    Or where is your cross-toolchain installed?

    In other words, where is arm-linux-gnueabihf-g++ located?

    So I honestly don't know if that's right or wrong because i'm not at all familiar with this process.

    If you like it or not, cross-compiling is an advanced topic which requires deep understanding of the involved tools.

    You should probably start cross-compiling a "hello world" application before trying a large library like Qt.



  • So i search for the compiler after digging into the details and the error appears to be in error. That entire path that it says doesn't exist, does exist.

    /home/brandon/development/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-g++

    I can cd into that last bin directory and there are about 2 dozen compilers in there and arm-linux-gnueabihf-g++ is in there. for some reason it appends g++ to the string which is why the instructions have you only put " arm-linux-gnueabihf-"

    So now I understand better what it wants, but not why it can't find it.


  • Lifetime Qt Champion

    @graniteDev

    Ok, so the paths are 100% the same? Does the compiler arm-linux-gnueabihf-g++ have the executable bit set? Sometimes you also have to call an "enviroment-setup" script to use the cross toolchain, not sure if that applies to your toolchain also.

    Btw: arm-linux-gnueabihf- is the cross-toolchain-prefix, which tells you that the compiler produces "arm" executables for linux. "hf" stands for hardware floating point support and "gnueabi", I honestly would have to google it ;) g++ is just the GNU GCC C++ compiler. Your normal compiler is therefore called g++, and the cross-compiler is called arm-linux-gnueabihf-g++.



  • @aha_1980

    Double checked, yes it has the execution bit set for own, group and everyone else. I've added that bin to the path for good measure.

    Here is something odd. If I cd into that bin directory and

    ./arm-linux-gnueabihf-g++
    

    the result

    bash: ./arm-linux-gnueabihf-g++: No such file or directory
    

    What seriously is wrong? The file is right in that directory! It even autocompletes for me! I really don't get this.


  • Lifetime Qt Champion

    @graniteDev

    Puh, that's getting a tough one. But I don't give up yet. Can you please do a file ./arm-linux-gnueabihf-g++ in that directory and post the output here?



  • @aha_1980

    No problem:

    ./arm-linux-gnueabihf-g++: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.15, stripped
    

    ok....is it a problem that that says intel and I'm running amd?


  • Lifetime Qt Champion

    @graniteDev

    Ok, I think you your problem is, that this toolchain is for 32-Bit PC (i.e. x86), while you are probably running a 64 bit system (i.e. x86_64, you can check with the arch command).

    It might be possible to get this to run, but I'd rather recommend you to get a toolchain that directly runs on your system. you avoid the memory limits of 32 bit architecture with that also.

    So far...



  • @aha_1980 Hmm...ok, maybe I missunderstood some of the instruction when it talked about 64bit. I assumed it was talking about the pi, which is 32bit, but yeah it's a brand new Ryzen machine, it's 64 bit.

    I'll have to come back to this later today, but thank you for that. I'll let you know what I find.



  • @aha_1980

    arch command on my desktop:
    x86_64

    the pi:
    armv7l


  • Lifetime Qt Champion

    @graniteDev

    Hmm...ok, maybe I missunderstood some of the instruction when it talked about 64bit. I assumed it was talking about the pi, which is 32bit

    Don't worry, as said, cross compiling is advanced stuff ;)

    arch command on my desktop:
    x86_64

    Ok, that proves it.



  • @graniteDev

    arch command on my desktop:
    x86_64

    If you're following the suggested RaspberryPi2EGLFS guide, in step #10 please pay attention to

    If your system is 64 bit you may also edit device option to:



  • @Pablo-J.-Rogina

    Ok so I added the options for 64 bit, and looks like it all worked and compiled. So then I went to do the next step which is a test build, but there is no ~/raspi/qt5/bin/qmake

    That directory doesn't exist, so now I really don't know what the hell to do. The previous steps created the qt5 and qt5pi folders so if there are missing directories, now what?



  • Ok so I got a lot farther using a different set of instructions, in fact I got to actually building in Qt Creator!!

    However Qt Creator is failing to upload the file to the raspberry pi:

    mkdir: cannot create directory ‘/opt/widgettest’: Permission denied
    21:09:40: Failed to upload file "/home/brandon/development/build-widgettest-RaspPi-Release/widgettest".
    21:09:40: Deploy step failed.
    Error while building/deploying project widgettest (kit: RaspPi)
    When executing step "Upload files via SFTP"
    

    How do I give Qt permission to do this? Do I need to dissable some security on the pi? Or add "sudo" to some commands in Qt?


  • Lifetime Qt Champion

    You should either use credentials for your Pi that allows to write in that folder, or change the folder for something the user you use to connect to your RPi can write to.



  • even i am also getting same problem,I am very new this qt creator,I am using the ubuntu ,can you say step by step please..



  • @asha said in How do I setup a kit to crosscompile for Raspbian for the Pi3?:

    can you say step by step please..

    What have you done so far? Any errors you can share here?

    Just in case, please refer to any of these guides:

    1. Cross-compile and deploy Qt 5.12 for Raspberry Pi
    2. RaspberryPi2EGLFS

Log in to reply