Want to set up Qt5 for developing application in Wandboard
QMAKE_INCDIR_OPENGL_ES2 = /usr/include/GLES2/
& rest code is as it is.
But after giving ./configure command problem is still as it is.
But all the Paths are now correctly set ? Can you post the new qmake.conf ?
Please see the new qmake.conf file
qmake configuration for the Freescale iMX6 boards (single, dual and quad)
This mkspec is based and tested on the ltib-source-release 3.0.15
Building ltib including glib, gpu-drivers and what ever you want to use (e.g. dbus or fontconfig)
This mkspec is tested with a framebuffer (eglfs) configuration (not testes with X11)
A typical configure line looks like:
/home/tsenyk/qt5/qt5/configure -opensource -confirm-license -make libs -device imx6 \
-device-option CROSS_COMPILE=/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-fsl-linux-gnueabi- \
-sysroot <path-to-your-ltib-install>/rootfs -no-gcc-sysroot \
NOTE: currently ltib doesn't produce a proper staging/sysroot-filessystem.
If gcc's --sysroot is used, the toolchain doesn't find basic binaries (e.g. crt1.o),
therefore you have to pass -no-gcc-sysroot to configure if you pass -sysroot to configure!
EGLFS_PLATFORM_HOOKS_SOURCES = $$PWD/qeglfshooks_imx6.cpp
QMAKE_INCDIR_OPENGL_ES2 += /usr/include/GLES2/
QMAKE_LIBDIR_OPENGL_ES2 += /usr/lib/i386-linux-gnu/
QMAKE_LIBS_EGL += -lEGL
QMAKE_LIBS_OPENGL_ES2 += -lGLESv2 -lEGL -lGAL
QMAKE_LIBS_OPENVG += -lOpenVG -lEGL -lGAL
QMAKE_LFLAGS += -Wl,-rpath-link,$$[QT_SYSROOT]/usr/lib
IMX6_CFLAGS = -march=armv7-a -mfpu=neon -DLINUX=1 -DEGL_API_FB=1
IMX6_CFLAGS_RELEASE = -O2 $$IMX6_CFLAGS
QMAKE_CFLAGS_RELEASE += $$IMX6_CFLAGS_RELEASE
QMAKE_CXXFLAGS_RELEASE += $$IMX6_CFLAGS_RELEASE
QMAKE_CFLAGS_DEBUG += $$IMX6_CFLAGS
QMAKE_CXXFLAGS_DEBUG += $$IMX6_CFLAGS
Can you make sure those libraries are for ARM ? You can use file command for that.
and post the output here
No these files are not for ARM, its for Intel, see the o/p
msil@msil-ThinkCentre-Edge71:~/Qt5.3.1/5.3/Src/qtbase$ file /usr/lib/i386-linux-gnu/libGLESv2.so
/usr/lib/i386-linux-gnu/libGLESv2.so: symbolic link to `mesa-egl/libGLESv2.so'
msil@msil-ThinkCentre-Edge71:~/Qt5.3.1/5.3/Src/qtbase$ file /usr/lib/i386-linux-gnu/mesa-egl/libGLESv2.so
/usr/lib/i386-linux-gnu/mesa-egl/libGLESv2.so: symbolic link to `libGLESv2.so.2.0.0'
msil@msil-ThinkCentre-Edge71:~/Qt5.3.1/5.3/Src/qtbase$ file /usr/lib/i386-linux-gnu/mesa-egl/libGLESv2.so.2.0.0
/usr/lib/i386-linux-gnu/mesa-egl/libGLESv2.so.2.0.0: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, BuildID[sha1]=9a43029fd41b7b30967de0b2c1b43bcdd5316606, stripped
How to get corresponding ARM files?
Can you again locate libGLESv2.so and check if there's other libraries and then running file command for each of them ?
But since you have apt-get install'd the drivers it should have downloaded the ARM versions of those libraries instead of Intel.
Is wandboard arm based for sure ?
When I give locate libGLESv2.so then only a single file found which is for Intel version. No other file found.
i am not getting what you asked about Wandboard, can you plz elaborate?
I said that since you have installed opengl es libraries using apt-get i think it should have downloaded arm compatible libraries and not intel
apt-get install libgles1-mesa libgles1-mesa-dev
apt-get install freeglut3 freeglut3-dev
and then see if you get arm based libraries
Still I am not getting the libGLESv2.so file other than previous.
Can you tell from scratch how to setup Qt for my wandboard application?
I think there is some wrong at my end while doing all this thing.
can I explain you in brief how i am started & how i reached at this stage in my project?
this will help you to know if i was wrong at some point during this progress.
First we need to configure Qt before compiling, so during configuration process we get this OpenGL ES error, we have installed the libraries, found the paths of it's related header files and libraries and saved it to qmake.conf using those variables.
The problem i guess here is those libraries are Intel and not ARM and we need ARM compatible libraries since board is ARM based.
One way would be try repeating the whole process again to errors if any.
Well i think best would be to ask on their "forums":http://www.wandboard.org/index.php/forums, someone definitel must have done it for ubuntu and not yocto..
Surely I will put the same problem at Wandboard forum. Lets see what is reply from that forum.
I will get back to you once they reply.
Just backtracked, since you are cross compiling, need to set the paths of OpenGL ES libs and headers to that of your toolchain. You toolchain must have those header files and the library too.
As you said, can you tell me what are the OpenGL ES libraries & headers for Linaro toolchain (gcc-linaro-arm-linux-gnueabihf-4.8-2014.04_linux) which i am using.
Also plz tell me where to set the paths of those files.
The same that we searched earlier:
header - GLES2/gl2.h i.e GLES2/*
library - libGLESv2.so
It must be in the toolchain.
I have checked the header files & library files within the toolchain but its not there.
You can check it by downloading the toolchain from below link.
Another possibility of those OpenGL libraries would be in the Ubuntu image that you have downloaded. Can you search for those in the Ubuntu that you have flashed on the board ?
I search at my end i got header file GLES2/gl2.h at multiple when i put command "file path/GLES2/gl2.h" then at every path it gives C source file in ASCII format.
Also I got only one libGLESv2.so library which is Compatible to Intel.
Can i search libGLESv2.so file for ARM on Internet & download it & copy to my toolchain?
is it OK?
bq. Can i search libGLESv2.so file for ARM on Internet & download it & copy to my toolchain?
Not sure if that would work.
But did you search if it is in the Ubuntu OS that you flashed on the board ?
It surely must be there.
And if it's there you will need to compile Qt in that environment so that it picks up the ARM compatible OpenGL libraries.
Yes, the library libGLESv2.so is avilable at the location /usr/lib/i386-linux-gnu/mesa-egl & it is with Ubuntu OS. So how can I generate ARM compatible library with this.
Can you provide steps?
Lets clarify few things
- Where are you compiling Qt ? on the WandBoard or on your development machine ?
- Where is this above library on the WandBoard or your machine ?
- Right now I am compiling code in Qt which is installed on my desktop PC. i haven't port Qt on wandboard.
- The above path which i mentioned is on system directory. thats means its in my PC rootfs.
Do you have the Ubuntu OS for WandBoard image? If not you can create it from the OS that is flashed on your board using dd command. Then mount that image on your Host PC so that you can compile Qt in that ARM compatible Ubuntu OS environment.
Can you see "this":http://www.ics.com/blog/building-qt-5-raspberry-pi#.U9tTk3Ka60k ? It explains nicely how to compile Qt5 for Raspberry Pi. I think it will be a similar process with just toolchain and compiling environment changes. Anyway it explains nicely about the cross compiling so that you get understanding what cross compiling is.
Let me tell you, how i reached to this stage of developement, so that you can notice what part is done & what is left.
I have followed Robert Nelson Method to set up SD card to boot Wandboard. I have successfully boot the Wandboard which will create command prompt & arm login on Wandboard. Also i have tested a simple "Hello Word" program written in vi editor & cross compile from Linaro Toolchain (gcc-linaro-arm-linux-gnueabihf-4.8-2014.04_linux) on wandboard.
Also I have download "qt-opensource-linux-x86-5.3.1.run" file & run it using terminal commands.
Then i generate new project in Qtcreater of Qt5.3.1 & then compile it for local platform. Its compile successfuly gives o/p file for host machine (My desktop PC).
Now I want to do the same (that is cross compiling) for target board (Wandboard). For that I want to set up compilers, Kits, debuggers, Devices & Qt versions ( from the path Tools > Options > Build & Run) which will generate o/p file for Wandboard.
Now tell me what to do next.
bq. Also i have tested a simple “Hello Word” program written in vi editor & cross compile from Linaro Toolchain (gcc-linaro-arm-linux-gnueabihf-4.8-2014.04_linux) on wandboard.
The hello world program you have compiled requires just an arm gcc compiler which is provided by the toolchain and nothing other external.
bq. For that I want to set up compilers, Kits, debuggers, Devices & Qt versions ( from the path Tools > Options > Build & Run) which will generate o/p file for Wandboard.
For this you need to compile Qt5 for Wandboard first but for that you need ARM compatible OpenGL ES libraries which are not on your host machine but are on your target machine.
For that you have to mount the ARM compatible Ubuntu OS's image on your host system so that you get the complete environment and compilation can carry on.
After compilation succeeds you can add this Qt5 build as a kit to the Qt creator also compiler to be set as the arm linaro gcc so that when you compile applications it compiles for the arm.
Now you first need to find way to mount that WandBoard Ubuntu OS's image on your host system.
Refer to the ICS link that i posted earlier where you can see how to create an image and how to mount it.
I have ported the Ubuntu image for wandboard in to the SD card using Win32imagewriter.
I have observed the file type of "libGLESv2.so.2.0.0" & it gives ARM compatible.
I have copied both "gl2.h" & "libGLESv2.so.2.0.0" file at my pc Desktop. Now tell me what to do next to configure the file?
Can i replace these files with the Intel compatible files located at toolchain?
bq. I have ported the Ubuntu image for wandboard in to the SD card using Win32imagewriter.
Did you flashed it back on to SD card ? You must not.
You have to create image file from OS on the SD card.
So do you have the image file ?
Actually I have downloaded ubuntu image file from "http://www.wandboard.org/index.php/downloads".
Then i format my SD card & port that image file into SD card using card reader & "Win32DiskImager-0.9.5-install" tool.
Then I read the SD card using card reader & search the files “gl2.h” & “libGLESv2.so.2.0.0” in the sd card.
I got these files in SD card, then I copied that files to my desktop.
bq. Then i format my SD card & port that image file into SD card using card reader & “Win32DiskImager-0.9.5-install” tool.
Good that you flashed it. But we need the image file which you have downloaded from the said site.
Ok, Now you need to mount that image on your host system.
For that go to the ICS link that i posted earlier as refer from,
bq. You will need the offset for the Linux image to mount it. If it's not otherwise provided with the download, you can determine it using losetup. There are 512 bytes per sector, so in the example below the offset is 122880 * 512 = 62914560.
$ sudo /sbin/losetup /dev/loop0 raspberry-working-image.img
$ sudo /sbin/fdisk -l /dev/loop0
Device Boot Start End Blocks Id System
/dev/loop0p1 8192 122879 57344 c W95 FAT32
/dev/loop0p2 122880 3788799 1832960 83 Linux
$ sudo /sbin/losetup -d /dev/loop0
Now create a mount point and mount the image:
$ sudo mkdir /mnt/raspberry-rootfs
$ sudo mount -o loop,offset=62914560
$ ls /mnt/raspberry-rootfs
bin dev home lost+found mnt proc run selinux sys usr
boot etc lib media opt root sbin srv tmp var
Follow above as per your requirements.
bq. I got these files in SD card, then I copied that files to my desktop.
No use of copying those files on your host system as it will possibly require the whole environment which you are going to create now by mounting the image file as explained in above steps.
As per the previous discussion, i haved tried that command sequence but I am getting stuck at below command.
*sudo mount -o loop,offset=62914560 \
It gives error as mount: you must specify the filesystem type.
After searching on net i pass filesystem type in command as
*sudo mount -o loop,offset=62914560 \
Wandboard-Ubuntu-image.img /mnt/wandboard-rootfs/ -t ext3*
then the response is
mount: wrong fs type, bad option, bad superblock on /dev/loop0,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so
After this I tried the command dmeg | tail but the response is not understanding.
Can you plz help me to resolve this?
Can you show what type is it ?
It is a x86 boot sector
Sorry to mention but i too don't know. Try searching the internet for how to mount that image.
We have decided to move on Yocto instead of Ubuntu.
So I am now staring on Yocto. while building Qt using yocto on wandboard I require your help.
Hope you will support me at that time.
Thanks for your outstanding support till now.
Any replies from their forums ?
Seems Yocto has good documentation on Qt5.
What ever they shared with me regarding the query is related to yocto Only.
With there reply it seems like we also have to move to yocto if we want to finish it with in a time span.