Build a QT/11 application for beagleboard black by cross compiling from ubuntu

Correction, export PATH=$PATH:/usr/local/angstrom/arm/bin

I forgot the last bin…

Correction, export PATH=$PATH:/usr/local/angstrom/arm/bin

I forgot the last bin…

I missed this answer, sry ; yes : this happend after built Qt app on host and tried to run it on BBB.

I guess I wasn’t clear, you need to type ‘arm-angstrom-linux-gnueabi-g++ --version’. Just typing g++ will use your regular host compiler (not toolchain cross compiler)

If that gives a valid response, you then need to modify your qmake.conf files or configure command line options (depending on Qt version and how you configured it) to point to the full binary name, not just g++.

From the error message, I doubt the error is in qabstractanimation.cpp, but you can look around for a local qmake.conf file, for that module, that may be pointing to the wrong g++.
Louis

Thanks for all the help Louis. I really appreciate it!

As you have probably guessed I am new to cross-compiling J

http://www.packtpub.com/building-a-home-security-system-with-beaglebone/book

You’re welcome. Sometimes things sound so clear when I write them, but the next day…not so much :slight_smile:

I’ve created a howto on my blog, for building Qt 5.2 targeted at a BBB running Ubuntu. It is similar to the cloud-rocket site, but using the Linaro toolchain, and I start from the very beginning: Ubuntu virtual machine creation. I tried to be verbose, so maybe you can use it to double check your host configuration. Search for “Bare Metal Qt5.2 Beaglebone” if you are interested.

Qt 5.2 is very different from 4.x (QPA vs QWS), so I am not recommending that you change, especially if you have a working 4.x application. I am still trying to work out the GUI bugs and figure out exactly what modules I need to compile into Qt (the configure options have significantly changed from 4.x to 5.2)

Louis

You’re welcome. Sometimes things sound so clear when I write them, but the next day…not so much :slight_smile:

Been there myself J

I’ve created a howto on my blog, for building Qt 5.2 targeted at a BBB running Ubuntu. It is similar to the cloud-rocket site, but using the Linaro toolchain, and I start from the very beginning: Ubuntu virtual machine creation. I tried to be verbose, so maybe you can use it to double check your host configuration. Search for “Bare Metal Qt5.2 Beaglebone” if you are interested.

I’ll give it a look.

Qt 5.2 is very different from 4.x (QPA vs QWS), so I am not recommending that you change, especially if you have a working 4.x application. I am still trying to work out the GUI bugs and figure out exactly what modules I need to compile into Qt (the configure options have significantly changed from 4.x to 5.2)

I think I’ll let YOU squash the bugs J In the mean time, I think I will start over from scratch with the cloud-rocket version.

This time I am going to make sure the compiler works before I continue with the rest of the steps!

Louis

Ok;

We have something weird going on here (?)

I started with a fresh VM and just installed the tool chain, from the file I had previously downloaded.

I then gave myself root access and went to the “/usr/local/angstrom/bin” directory.

Here’s what happened:

root@ubuntu:/usr/local/angstrom/arm/bin# arm-angstrom-linux-gnueabi-g++

arm-angstrom-linux-gnueabi-g++: command not found

root@ubuntu:/usr/local/angstrom/arm/bin# arm-angstrom-linux-gnueabi-g++ --version

arm-angstrom-linux-gnueabi-g++: command not found

root@ubuntu:/usr/local/angstrom/arm/bin# ./arm-angstrom-linux-gnueabi-g++ --version

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

When I type “ls –l” I get:

-rwxr-xr-x 1 root root 483996 Mar 16 2011 arm-angstrom-linux-gnueabi-addr2line

-rwxr-xr-x 1 root root 503544 Mar 16 2011 arm-angstrom-linux-gnueabi-ar

-rwxr-xr-x 1 root root 853272 Mar 16 2011 arm-angstrom-linux-gnueabi-as

-rwxr-xr-x 1 root root 483800 Mar 16 2011 arm-angstrom-linux-gnueabi-c++filt

-rwxr-xr-x 1 root root 436563 Mar 16 2011 arm-angstrom-linux-gnueabi-cpp

-rwxr-xr-x 1 root root 438687 Mar 16 2011 arm-angstrom-linux-gnueabi-g++

-rwxr-xr-x 1 root root 434700 Mar 16 2011 arm-angstrom-linux-gnueabi-gcc

-rwxr-xr-x 1 root root 17422 Mar 16 2011 arm-angstrom-linux-gnueabi-gccbug

-rwxr-xr-x 1 root root 75976 Mar 16 2011 arm-angstrom-linux-gnueabi-gcov

-rwxr-xr-x 1 root root 3184888 Mar 16 2011 arm-angstrom-linux-gnueabi-gdb

-rwxr-xr-x 1 root root 3184892 Mar 16 2011 arm-angstrom-linux-gnueabi-gdbtui

-rwxr-xr-x 1 root root 442039 Mar 16 2011 arm-angstrom-linux-gnueabi-gfortran

-rwxr-xr-x 1 root root 538904 Mar 16 2011 arm-angstrom-linux-gnueabi-gprof

-rwxr-xr-x 1 root root 873752 Mar 16 2011 arm-angstrom-linux-gnueabi-ld

-rwxr-xr-x 1 root root 490292 Mar 16 2011 arm-angstrom-linux-gnueabi-nm

-rwxr-xr-x 1 root root 629144 Mar 16 2011 arm-angstrom-linux-gnueabi-objcopy

-rwxr-xr-x 1 root root 759480 Mar 16 2011 arm-angstrom-linux-gnueabi-objdump

-rwxr-xr-x 1 root root 503548 Mar 16 2011 arm-angstrom-linux-gnueabi-ranlib

-rwxr-xr-x 1 root root 261868 Mar 16 2011 arm-angstrom-linux-gnueabi-readelf

-rwxr-xr-x 1 root root 748476 Mar 16 2011 arm-angstrom-linux-gnueabi-run

-rwxr-xr-x 1 root root 483988 Mar 16 2011 arm-angstrom-linux-gnueabi-size

-rwxr-xr-x 1 root root 483960 Mar 16 2011 arm-angstrom-linux-gnueabi-strings

-rwxr-xr-x 1 root root 629144 Mar 16 2011 arm-angstrom-linux-gnueabi-strip

-rwxr-xr-x 1 root root 281569 Mar 16 2011 i686-linux-libtool

-rwxr-xr-x 1 root root 281569 Mar 16 2011 libtool

-rwxr-xr-x 1 root root 68311 Mar 16 2011 libtoolize

.

.

.

Looks to me like the program is executable. Could it be damaged or am I doing something wrong ?

Bill

Louis,

Could you please remind me the pointer to this how to?
I’m sure this could be ok for me on Debian.

David

@Bill
Can you run ‘uname -a’ from a terminal and post the results here?

What is the file name (or download link) of the angstrom toolchain that you downloaded?

@David
Sure. I have tried it with the Debian beta and it seems to be working.

http://armsdr.blogspot.com/2014/01/bare-metal-qt-52-on-beaglebone-black.html

Louis

Or just install ArchLinux and do pacman -S qt and be done with having to deal with compiling qt5 yourself. You can even install qt3 qt4 and qt5 all on the same box with this simple command pacman -S qt qt4 qt3

@Don & Louis

I feel really dumb L

I discovered my problem when I compared the post on this list to the Cloud-Rocket site.

The post on this list said the desktop environment was: Ubuntu 13.10 64bit (VB).

While the ones on the Cloud-Rocket site said: Ubuntu 12.10 32bit (VMplayer)

The reason I was having so much trouble is I was trying to run a 32 bit app in a 64 bit OS L

I built Ubuntu 12.10 32bit, and now things are rolling right along.

I have yet to compile the hello world program, but I’m getting there ……

Bill

http://www.packtpub.com/building-a-home-security-system-with-beaglebone/book

Thanks Louis.
When you say “Debian Beta” I assume that it the official one, not the BBB (from Robert C Nelson) right ?
Well I have to try it myself btw.

For the record, Robert Nelsons Debian image is custom kernel only, with a “stock” file image. Also, as far as I know “Roberts Debian” is the only “official” Debian for the Beagelbone black.

Well i was refering to official Debian image as another possibility

How can i install the Robert’s Debian on my BBB?

I tested it on Robert Nelson’s Debian beta found at a link from this forum post:

https://groups.google.com/forum/m/#!category-topic/beagleboard/9EG0SbhwTx0

fine. This worth another test then, thanks Louis

Hi Louis,

I’m totally lost with cross compile with QT … I’ve the ubuntu distribution image from Robert Nelson.

Beagle :

ubuntu@arm:~$ uname -a

Linux arm 3.8.13-bone35 #2 SMP Mon Jan 13 14:52:52 CET 2014 armv7l armv7l armv7l GNU/Linux

ubuntu@arm:~$ qmake -version
QMake version 2.01a
Using Qt version 4.8.4 in /usr/lib/arm-linux-gnueabihf

PC :

And I’m trying to compile an hello world in my ubuntu VM VirtualBox ( 32bit ) .
l
I’ve downloaded angstrom-2011.03-i686-linux-armv7a-linux-gnueabi-toolchain-qte-4.6.3.tar.bz2
then tar -C / -xjf angstrom-2011.03-i686-linux-armv7a-linux-gnueabi-toolchain-qte-4.6.3.tar.bz2

and . /usr/local/angstrom/arm/environment-setup

qtcreator :

the gcc that i’m using is here :

/usr/bin/arm-linux-gnueabi-g++

the QT version :

/usr/local/angstrom/arm/bin/qmake2

and when i wan to make my project I got :

arm-angstrom-linux-gnueabi-g++ -c -pipe -g -Wall -W -D_REENTRANT -DQT_CORE_LIB -I/usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/usr/share/qtopia/mkspecs/linux-g++ -I…/beagleTest -I/usr/local/angstrom/arm/arm-angstrom-linux-gnueabi//usr/include/qtopia/QtCore -I/usr/local/angstrom/arm/arm-angstrom-linux-gnueabi//usr/include/qtopia -I. -I…/beagleTest -I. -o main.o …/beagleTest/main.cpp
arm-angstrom-linux-gnueabi-g++ -o beagleTest main.o -L/usr/local/angstrom/arm/arm-angstrom-linux-gnueabi//usr/lib -lglib-2.0 -lQtCoreE -lpthread

After, I put the file beagleTest in my beagle directory .

Beagle:

sudo chmod +x beagleTest

ubuntu@arm:~$ ./beagleTest -qws
-bash: ./beagleTest: No such file or directory

Why ?

ubuntu@arm:~$ readelf -h beagleTest
ELF Header:
Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
Class: ELF32
Data: 2’s complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: EXEC (Executable file)
Machine: ARM
Version: 0x1
Entry point address: 0x8640
Start of program headers: 52 (bytes into file)
Start of section headers: 100096 (bytes into file)
Flags: 0x4000002, has entry point, Version4 EABI
Size of this header: 52 (bytes)
Size of program headers: 32 (bytes)
Number of program headers: 8
Size of section headers: 40 (bytes)
Number of section headers: 39
Section header string table index: 36

I’m really lost, do you have an idea ?

Thx,

ubuntu@arm:~$ qmake -version
QMake version 2.01a
Using Qt version 4.8.4 in /usr/lib/arm-linux-gnueabihf

the gcc that i’m using is here :

/usr/bin/arm-linux-gnueabi-g++

Your using ubuntu “armhf” yet building the appplication with a “gnueabi” based compiler…

“armhf” uses this linker:
/lib/ld-linux-armhf.so.3

“armel/gnueabi” uses this linker:
/lib/ld-linux.so.3

Use the correct “gnueabihf” toolchain…

Regards,