How do I setup a kit to crosscompile for Raspbian for the Pi3?
-
a litte bit outdated but you´ll get the idea
-
-
Hi,
Then use the xcb backend on the Pi like it's used on the desktop.
-
to add to SGaist, the mentionted guide is not using Qt for Device Creation (boot to Qt).
Your are right the guide states it´s notintended for running desktop-style, windowed Qt apps under X11
but as it´s an howto on setting up a crosscompiler for raspbian your are free to choose the platform plugin used to display your app. For XCB see http://doc.qt.io/qt-5/embedded-linux.html#xcb
Maybe you have to add some additional libs to be able to compile xcb (http://doc.qt.io/qt-5/linux-requirements.html).
But once again, even if you use the eglfs plugin it´s not using boot to Qt! You are only not using a window manager. BTW this is independent from the decision using widgets or quick, if you use vc4 on the rpi -
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.
-
@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!
-
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.
-
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 calledg++
, and the cross-compiler is calledarm-linux-gnueabihf-g++
. -
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.
-
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? -
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?
-
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.
-
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_64Ok, that proves it.