Upgrade Qtopia 4.5

NGUYEN THANH NHAN
Currently we use Fedora 9.0 with QtDesigner4, It design for Qtopia4. But in
default mini2440 with Qtopia 2.2.0. 
Please help me upgrade mini2440 with Qtopia 2.2.0 to Qtopia 4.

Tom
Here is a guide for Qt 4.5 on mini2440
http://blog.cor-net.org/?p=15

fookie
Hey NGUYEN were you able to upgrade the mini2440 to Qt4.5 successfully ??

nguyen thanh nhan
I read this link but I can't upgrade it.

Neo
Hi,
I read above link , but not succeeded.
But , i cross compiled qt 4.5.3 , added to my fs with some changes and
ported on board.
It works fine. (r8 now without tslib)

lim
Hi Neo,
Would you please share your steps? 

I have got tslib1.4 successfuly. However when compiling  Qt4.5.3, I got
these messages. 

g++ -fno-exceptions -Wl,-O1
-Wl,-rpath,/home/vikikivi/mini2440-bootstrap/output/qt45/lib
-Wl,-rpath,/home/vikikivi/mini2440-bootstrap/output/qt45/lib -o
../../../bin/moc release-shared/moc.o release-shared/preprocessor.o
release-shared/generator.o release-shared/parser.o release-shared/token.o
release-shared/main.o   
-L/home/vikikivi/mini2440-bootstrap/output/tslib/lib -L../bootstrap
-lbootstrap -L/home/vikikivi/mini2440-bootstrap/output/tslib/lib -ldl
/usr/bin/ld: ../bootstrap/libbootstrap.a(compress.o): Relocations in
generic ELF (EM: 40)
../bootstrap/libbootstrap.a: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
make[1]: *** [../../../bin/moc] Error 1
make[1]: Leaving directory
`/home/vikikivi/mini2440-bootstrap/qt-embedded-linux-opensource-src-4.5.3/src/to
ols/moc'
make: *** [sub-moc-install_subtargets-ordered] Error 2

Neo
Hi lim,
I don't know how to cross compile qt 4.5 with tslib support.
But , of course you can cross compile both the things separately and then
merge on board.

Also, i think u r using local g++ for compiling qt4.5, which will not be
useful for mini2440.

What i have done is:-
1) Downloaded qt 4.5 from http://trolltech.com/downloads.

2) Used a arm based cross-compiler toolchain like gcc 4.3.2
(http://www.andahammer.com//Downloads/linux/arm-linux-gcc-4.3.2.tgz) 

3) Now , in qt4.5 directory,
open file mkspecs/qws/linux-arm-g++/qmake.conf , and replace "arm-linux-" 
with "arm-none-linux-gnueabi-" everwhere.

4) create directory Qt in /usr/local/

5) compile qt4.5 with as:-
./configure -prefix /usr/local/Qt -release -shared -fast -pch
-no-qt3support -no-sql-sqlite -no-libtiff -no-libmng -no-libjpeg -qt-zlib
-no-libpng -no-freetype -no-openssl -nomake examples -nomake demos -nomake
tools -optimized-qmake -no-phonon -no-nis -no-opengl -no-cups -no-xcursor
-no-xfixes -no-xrandr -no-svg -no-phonon-backend -no-3dnow -no-largefile
-no-gif -no-mmx -no-xrender -no-xmlpatterns -no-xkb -no-sm -no-xinerama
-no-xshape -no-webkit -no-separate-debug-info -xplatform qws/linux-arm-g++
-embedded arm -depths 16 -no-qvfb -no-gtkstyle -qt-gfx-linuxfb -no-gfx-qvfb
-no-kbd-qvfb -no-mouse-qvfb -qt-kbd-usb -confirm-license 

(This is without tslib configuration).

6) make 

7) make install

8) Now, download and cross compile tslib from
(http://download.berlios.de/tslib) with our arm compiler.

9) Now, you can merge tslib and Qt dirs on your filesystem on board and set
paths according to instructions given here
(http://blog.cor-net.org/embedded/mini2440/qt-45-on-mini2440/) for tslib
and Qt.

I hope it will helpful to you.
My tslib is working fine now.......

Chetan Dadhaniya
Hi Neo,

I am having same problem.
I have compiled qt 4.5 as per the link given.
I have copied the libraries (libQtCore,Gui,Network..) on the board.

When I run hello program it gives me sh: :./hello not found.

what might be the cause?

where I have to copy the libs? I have tried /lib, /opt/Qtopia,
/usr/local/Qt etc. but failed.


Thanks

Neo
Can you plz tell me whether the hello program came along with
demos/examples of cross compiled qt4.5 or its your own created on desktop?
b coz i got this error only in one of two cases:-

1) either i compiled hello prog. using local g++ and qmake on host
(desktop) machine.
                OR
2) I had used a cross compilation toochain which is not compatible to
mini2440.

lim
Hi Neo,

Can you please show your compilation environment?
Thanks

Neo
Hi lim,
By compilation environment , do you mean something like bitbake or open
embedded environment or so?

Sorry but I didn't understood your question.

BTW , i didn't used any compilation environment.
Just cross compiled qt 4.5.3 source with arm based gcc 4.3.2.

that's it!

Plz feel free to ask any of your doubts or any help from my side.

Lim
HI Neo,
I meant, the environment variables that you set before begin compiling
Qt4.5.  Something like below.

export CC=arm-none-linux-gnueabi-gcc
export CXX ?

export CROSS_COMPILE=arm-none-linux-gnueabi-

etc.... and finally

./configure -prefix /usr/local/Qt -release -shared -fast -pch
-no-qt3support -no-sql-sqlite -no-libtiff -no-libmng -no-libjpeg -qt-zlib
-no-libpng -no-freetype -no-openssl -nomake examples -nomake demos -nomake
tools -optimized-qmake -no-phonon -no-nis -no-opengl -no-cups -no-xcursor
-no-xfixes -no-xrandr -no-svg -no-phonon-backend -no-3dnow -no-largefile
-no-gif -no-mmx -no-xrender -no-xmlpatterns -no-xkb -no-sm -no-xinerama
-no-xshape -no-webkit -no-separate-debug-info -xplatform qws/linux-arm-g++
-embedded arm -depths 16 -no-qvfb -no-gtkstyle -qt-gfx-linuxfb -no-gfx-qvfb
-no-kbd-qvfb -no-mouse-qvfb -qt-kbd-usb -confirm-license

Hope these explain my  questions.

Chetan Dadhaniya
Hi Neo,

I have tested both options.
 - Program compiled with Qt4.5 and
 - my own program
none of above works,

Actually I had compile the qt4.5.2 with incompatible toolchain.
But when I tried with arm 4.3.2, it gives error & stop compilation.
Error is

ERROR: Source object .obj/release-shared-emb-arm/jquant2.o has EABI version
0, but target libqjpeg.so has EABI version 5

lim
Problems resolved. Just changed the contents of
mkspecs/qws/linux-arm-g++/qmake.conf to include the full path to the
toolchain.

TED
Hello, lim...

I meet the same problem with you.

configuration passed , but found error when make

g++ -c -pipe -fno-exceptions -O2 -Wall -W -DQT_MOC -DQT_BOOTSTRAPPED
-DQT_LITE_UNICODE -DQT_TEXTCODEC -DQT_NO_CAST_FROM_ASCII
-DQT_NO_CAST_TO_ASCII -DQT_NO_CODECS -DQT_NO_DATASTREAM
-DQT_NO_GEOM_VARIANT -DQT_NO_LIBRARY -DQT_NO_QOBJECT -DQT_NO_STL
-DQT_NO_SYSTEMLOCALE -DQT_NO_TEXTSTREAM -DQT_NO_THREAD
-DQT_NO_UNICODETABLES -DQT_NO_USING_NAMESPACE
-I../../../mkspecs/qws/linux-x86-g++ -I. -I. -I. -I../../../include
-I../../../include/QtCore -I../../../include/QtXml -I../../xml -o
release-shared/token.o token.cpp
g++ -c -pipe -fno-exceptions -O2 -Wall -W -DQT_MOC -DQT_BOOTSTRAPPED
-DQT_LITE_UNICODE -DQT_TEXTCODEC -DQT_NO_CAST_FROM_ASCII
-DQT_NO_CAST_TO_ASCII -DQT_NO_CODECS -DQT_NO_DATASTREAM
-DQT_NO_GEOM_VARIANT -DQT_NO_LIBRARY -DQT_NO_QOBJECT -DQT_NO_STL
-DQT_NO_SYSTEMLOCALE -DQT_NO_TEXTSTREAM -DQT_NO_THREAD
-DQT_NO_UNICODETABLES -DQT_NO_USING_NAMESPACE
-I../../../mkspecs/qws/linux-x86-g++ -I. -I. -I. -I../../../include
-I../../../include/QtCore -I../../../include/QtXml -I../../xml -o
release-shared/main.o main.cpp
g++
-Wl,-rpath-link,/home/leter/samba/QT/qt-everywhere-opensource-src-4.6.0/lib
-fno-exceptions -Wl,-O1 -Wl,-rpath,/ITRI/QT_PREFIX/lib
-Wl,-rpath,/ITRI/QT_PREFIX/lib -o ../../../bin/moc release-shared/moc.o
release-shared/preprocessor.o release-shared/generator.o
release-shared/parser.o release-shared/token.o release-shared/main.o    
-L/home/leter/samba/QT/qt-everywhere-opensource-src-4.6.0/src/tools/bootstrap
-lbootstrap
/usr/bin/ld:
/home/leter/samba/QT/qt-everywhere-opensource-src-4.6.0/src/tools/bootstrap/libb
ootstrap.a(compress.o):
Relocations in generic ELF (EM: 40)
/home/leter/samba/QT/qt-everywhere-opensource-src-4.6.0/src/tools/bootstrap/libb
ootstrap.a:
could not read symbols: File in wrong format
collect2: ld returned 1 exit status
make[1]: *** [../../../bin/moc] Error 1
make[1]: Leaving directory
`/home/leter/samba/QT/qt-everywhere-opensource-src-4.6.0/src/tools/moc'
make: *** [sub-moc-make_default-ordered] Error 2


But, I have modified the contents of
mkspecs/qws/linux-arm-g++/qmake.conf to include the full path to the
toolchain.


=============================== qmake.conf ================
#
# qmake configuration for building with arm-linux-g++
#

include(../../common/g++.conf)
include(../../common/linux.conf)
include(../../common/qws.conf)

# modifications to g++.conf
QMAKE_CC                =
/home/leter/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi-gcc
QMAKE_CXX               =
/home/leter/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi-g++
QMAKE_LINK              =
/home/leter/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi-g++
QMAKE_LINK_SHLIB        =
/home/leter/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi-g++

# modifications to linux.conf
QMAKE_AR                =
/home/leter/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi-ar
cqs
QMAKE_OBJCOPY           =
/home/leter/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi-objcopy
QMAKE_STRIP             =
/home/leter/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi-strip

load(qt_config)


any comment is preciated

lim
I would suggest the following steps:

#1 try with distclean and use the configuration to recompile. If it doesn't
work then try step #2.

#2 delete the whole Qt4.5 folder. Reinstall a fresh one. And then apply the
qmake.conf changes. Recompile. Make save a copy of your qmake.conf before
deleting it.

Good luck.

Spectrum
hey im following Neos steps to upgrade the Qt on mini2440.
I did everything as told, im very new to this platform so please bear with
me :) 
when compiling Qt im getting this error.

Creating qmake. Please wait...
/cross-compile/bin/arm-linux-g++ -c -o project.o -pipe
-DQMAKE_OPENSOURCE_EDITION -I. -Igenerators -Igenerators/unix
-Igenerators/win32 -Igenerators/mac -Igenerators/symbian
-I/root/Desktop/setups/qt-everywhere-opensource-src-4.6.0/include
-I/root/Desktop/setups/qt-everywhere-opensource-src-4.6.0/include/QtCore
-I/root/Desktop/setups/qt-everywhere-opensource-src-4.6.0/src/corelib/global
-I/root/Desktop/setups/qt-everywhere-opensource-src-4.6.0/src/corelib/xml
-DQT_NO_PCRE -DQT_BUILD_QMAKE -DQT_BOOTSTRAPPED -DQT_NO_TEXTCODEC
-DQT_NO_UNICODETABLES -DQT_NO_COMPONENT -DQT_NO_STL -DQT_NO_COMPRESS
-I/root/Desktop/setups/qt-everywhere-opensource-src-4.6.0/mkspecs/linux-g++
-DHAVE_QCONFIG_CPP -DQT_NO_THREAD -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT 
project.cpp
gmake: /cross-compile/bin/arm-linux-g++: Command not found
gmake: *** [project.o] Error 127

Janusz
Neo,

Can you tell me how did you compile tslib? There is no config file in the
tslib directory. I see that I have to use autoconf but I get some error
using it.

spectrum
@ Janusz

What exact error do you get.
i hope the command you are giving is ./autogen.sh

Pajolo
Janusz
You need to have automake and libtool installed
Then run in the tslib folder

./autogen.sh
./configure --build=i386-linux --host=arm-linux --target=arm
--disable-inputapi --prefix=${TSLIBOUTPUT}/
make
make install

Should work
Cheers
Pajolo

Janusz
Hallo,

Thanks spectrum and Pajolo  for help. Unfortunately I have other problem.
I have compiled tslib and qt4.5 and now I want to copy compiled qt
libraries on the board. Unfortunately I have bought EM2440-III-LCD-7 board
which is similar to the Mini 2440(based on the same module) but has
different Linux distro (embede sky) - I hadn't know that Mini 2440 exist
:(. I found this page after I had bought the board. So ...In my distro
there is no ldconfig file so I don't know if I can just copy TQ4.5
libraries to the /usr/lib or /lib directory ? Or what can. Change linux
distro ?

ambitious
Hi Neo,
      1 - I successfully crossed compiled the Qt 4.6.2 by runing the
following commands

$ tar -xzvf qt-everywhere-opensource-src-4.6.2.tar.gz
$ cd qt-everywhere-opensource-src-4.6.2
$ mkdir /usr/local/Qt
$ ./configure -embedded arm -xplatform qws/linux-arm-g++ -prefix =
/usr/local/Qt -qt-mouse-tslib -little-endian

$ make
$ sudo make install

2 - I succesfully crosed compile the tslib by runing this commands:

$ tar -xjvf tslib-1.0.tar.bz2
$ cd  tslib-1.0
$ ./autogen.sh
$ export ac_cv_func_malloc_0_nonnull=yes
$ ./configure --build=i386-linux --host=arm-linux --target=arm-linux
--disable-inoutapi --prefix=${TSLIBOUTPUT}

$ make
$ sudo make install

And till that point every thing gonna good
The questions now are

1 - what are the libraries required to be copied to the mini2440 board.
2 - what is the benefit of the tslib and wher i can configure it, i
successfully crossed compile the tslib but i don't make any of the export
commands because I don't know what is the true configuration.

I have two configuration 
this is one:

   #haigang added this for tslib
   export TSLIB_TSEVENTTYPE=H3600
   export TSLIB_CONSOLEDEVICE=none
   export TSLIB_FBDEVICE=/dev/fb0
   export TSLIB_TSDEVICE=/dev/touchscreen/0
   export TSLIB_CALIBFILE=/usr/etc/pointercal
   export TSLIB_CONFFILE=/usr/etc/ts.conf
   export TSLIB_PLUGINDIR=/usr/lib/ts

And this is the another configuration

   export TSLIB_TSEVENTTYPE=INPUT
   export TSLIB_CONSOLEDEVICE=none
   export TSLIB_FBDEVICE=/dev/fb0
   export TSLIB_TSDEVICE=/dev/input/ts
   export TSLIB_CALIBFILE=
   export TSLIB_CONFFILE=/usr/etc/ts.conf
   export TSLIB_PLUGINDIR=/usr/lib/ts

Thanks
M.Hamed

ambitious
Hi every body 

1 - what are the libraries required to be copied to the mini2440 board.
2 - what is the benefit of the tslib and wher i can configure it, i
successfully crossed compile the tslib but i don't make any of the export
commands because I don't know what is the true configuration.

Thanks 
M.Hamed

whitebank
Hi there. I've written way of upgrading Qt4.6.2 for mini2440. You could
check there, thanks
http://mini2440vietnam.blogspot.com/2011/04/upgrade-qt462-in-mini2440.html