Monday, February 1, 2010

Project: How to setup the mini2440 dev tools

It took me a little while to get the 'out of the box' tooling up and running for the mini2440 (3.5") so I'm putting the steps here. To get your own 2440, try here.

These instructions are for the no-frills sofware that comes with the mini2440. Nothing fancy, just the default Qtopia 2.2.0 on 2.6.29.

Host Linux (Ubuntu 9.10 - 32bit)
I can't stand Red Hat so I couldn't bring myself to use the arm9.net RH9 iso for the host pc.  Instead, I shot myself in the foot by using a 64bit version of Ubuntu 9.10. This was more trouble than it's worth and ultimately I couldn't resolve all the 64/32bit library issues, so I installed a vmware image of 32bit Ubuntu 9.10.

Dependencies
With a brand new 9.10 install, run the updater and then get these additional packages.
sudo apt-get install g++ libx11-dev libxmu-dev libxext-dev zlib1g-dev libjpeg62-dev libssl-dev uuid-dev

The arm-linux-gcc-4.3.2 toolchain
The following is based on the instructions found in this very handy manual PDF (English) with some minor changes for Ubuntu.

We'll need these archives from the DVD or website
arm-linux-gcc-4.3.2.tgz  examples.tgz

Extract the contents
chmod +x *.tgz
sudo tar xfzv arm-linux-gcc-4.3.2.tgz -C /

Add the bins to your path
sudo gedit /etc/bash.bashrc  (and add this line: PATH=$PATH:/usr/local/arm/4.3.2/bin )

reload your profile and see if they are found
arm-linux-gcc -v

If all went well, you should see this:
    Using built-in specs.
    Target: arm-none-linux-gnueabi
    Configured with: ....[config details]
    Thread model: posix
    gcc version 4.3.2 (Sourcery G++ Lite 2008q3-72)

Install the examples 
Note: the "opt/FriendlyARM/mini2440" path name is hard-coded into the build scripts so unless you want to adjust them, you should use this convention (case sensitive)
sudo mkdir /opt/FriendlyARM
sudo mkdir /opt/FriendlyARM/mini2440
sudo tar xfz examples.tgz -C /opt/FriendlyARM/mini2440/
sudo chown -R [yourgroup]:[youruser] /opt/FriendlyARM

now verify the tooling by compiling one of the examples:
cd /opt/FriendlyARM/mini2440/examples/hello/
make

You should see:
arm-linux-gcc -o hello hello.c

and the binary appears as well:
ubuntu:/opt/FriendlyARM/mini2440/examples/hello$ ls -l
-rwxr-xr-x 1 user:user 5061 2010-02-01 01:30 hello
-rw-r--r-- 1  user:user   73 2006-08-25 13:48 hello.c
-rw-r--r-- 1  user:user   98 2004-10-09 14:23 Makefile

check the executable:
file hello
hello: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.14, not stripped

Follow the instructions in the PDF above for moving the file to the 2440 and running it.

These examples demonstrate some of the hardware bits that are available on the 2440.  They dont use qt though, so if you want to build an app with a gui, then you'll need to read on...

Installing x86-qtopia
x86-qtopia provides tools and support for developing qt applications and running them on the host pc in a simulated embedded environment.  Here's how to set it up.

Extract the archive to: /opt/FriendlyARM/mini2440/
sudo tar xfvz  x86-qtopia.tar.gz  -C /opt/FriendlyARM/mini2440

Extract the individual archives:
cd /opt/FriendlyARM/mini2440/x86-qtopia/
sudo chmod +x *.gz
sudo tar xfz qtopia-2.2.0.tar.gz
sudo tar xfz konq.tar.gz
mkdir qtopia-2.2.0-FriendlyARM/qtopia/image
sudo tar xfvz fonts.tar.gz -C qtopia-2.2.0-FriendlyARM/qtopia/image

Some of the source code needs to be adjusted slightly in order to compile. Big thanks for the help here and here (skip2816)

Edit the four files below as noted:
sudo gedit  /opt/FriendlyARM/mini2440/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/src/libraries/qtopia/qmemoryfile_unix.cpp
line 141:  --- f = ::open(tmpFile.latin1(), O_CREAT | O_WRONLY);
line 141:  +++ f = ::open(tmpFile.latin1(), O_CREAT | O_WRONLY, (S_IRUSR|S_IWUSR));

sudo gedit /opt/FriendlyARM/mini2440/x86-qtopia/qtopia-2.2.0-FriendlyARM/qt2/src/tools/qmemoryfile_unix.cpp
line 143: --- f = ::open(tmpFile.latin1(), O_CREAT | O_WRONLY);
line 143: --- f = ::open(tmpFile.latin1(), O_CREAT | O_WRONLY, (S_IRUSR|S_IWUSR));

sudo gedit /opt/FriendlyARM/mini2440/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/src/libraries/qtopia/backend/vobject.cpp
line 419: --- char *dot = strrchr(g,'.');
line 419: +++ char *dot = (char *) strrchr(g,'.');

sudo gedit /opt/FriendlyARM/mini2440/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/src/plugins/codecs/wavplugin/wavplugin.cpp
line 435: char *ext = strrchr( path.latin1(), '.' );
line 435: char *ext = (char *) strrchr( path.latin1(), '.' );

Grab ownership or else the install will fail...
sudo chown -R [youruser]:[yourgroup] /opt/FriendlyARM/

I edited the build scripts to remove the initial archive removal and extractions.  This will prevent the source code changes above from being deleted and overwritten (which the scripts will do).  Alternatively, you can simply run the configure statement by hand, then run make, make install, etc..

UPDATE: I've posted the build scripts I've used here.

Finally you can run the build...
./build-all

That should do it.

Installing arm-qtopia
Extract the archive to /opt/FriendlyARM/mini2440/
sudo tar xfz arm-qtopia.tgz -C /opt/FriendlyARM/mini2440/

Edit the build scripts to remove the tar and rm entries
sudo gedit build build-konq

Manually extract the archives:
cd /opt/FriendlyARM/mini2440/
sudo chmod +x *.gz
sudo tar xfz qtopia-2.2.0.tar.gz
sudo tar xfz konq.tar.gz
sudo tar xfz fonts.tar.gz

Edit the following source files as indicated.
sudo gedit /opt/FriendlyARM/mini2440/arm-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/src/libraries/qtopia/qmemoryfile_unix.cpp line 141:  --- f = ::open(tmpFile.latin1(), O_CREAT | O_WRONLY);
line 141:  +++ f = ::open(tmpFile.latin1(), O_CREAT | O_WRONLY, (S_IRUSR|S_IWUSR));

sudo gedit /opt/FriendlyARM/mini2440/arm-qtopia/qtopia-2.2.0-FriendlyARM/qt2/src/tools/qmemoryfile_unix.cpp
line 143: --- f = ::open(tmpFile.latin1(), O_CREAT | O_WRONLY);
line 143: --- f = ::open(tmpFile.latin1(), O_CREAT | O_WRONLY, (S_IRUSR|S_IWUSR));

sudo gedit /opt/FriendlyARM/mini2440/arm-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/src/libraries/qtopia/backend/vobject.cpp
line 419: ---char *dot = strrchr(g,'.');
line 419: +++char *dot = (char *) strrchr(g,'.');

sudo gedit /opt/FriendlyARM/mini2440/arm-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/src/plugins/codecs/wavplugin/wavplugin.cpp
line 435: ---char *ext = strrchr( path.latin1(), '.' );
line 435: +++char *ext = (char *) strrchr( path.latin1(), '.' );

Grab ownership or else the install will fail...
sudo chown -R [youruser]:[yourgroup] /opt/FriendlyARM/

UPDATE: I've posted the build scripts I've used here.

run the build...
./build-all


Building an example (host)
Once the tools are in place, you can run a qt example and run it on the host.

Build the example:
cd /opt/FriendlyARM/mini2440/x86-qtopia/hello
./build

Change the last line of the run-hello script to find the hello executable:
sudo gedit run-hello
line 17: --- hello -qws
line 17: +++ /opt/FriendlyARM/mini2440/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/bin/hello -qws

./run-hello

At this point you should see the emulator display the hello example:


Building an example (arm)
Building the example for the embedded device is similar:

cd /opt/FriendlyARM/mini2440/arm-qtopia/hello
./build

Now move the binary to this folder so we can transfer it to the device (optional)
cp ../qtopia-2.2.0-FriendlyARM/qtopia/bin/hello .

To run this app on the 2440, first we have to move it there...

Moving the example app to the mini2440 (via ftp)
Since I'm running a linux vm under windows, I had to manually assign an ip address to my local area connection ( 192.168.1.120 ) via network connections.  Then I can ftp from the linux vm (which I set up to use NAT) to the 2440 via the crossover cable.

dev@ubuntu:/opt/friendlyARM/mini2440/arm-qtopia/hello$ ftp 192.168.1.230
Connected to 192.168.1.230.
220 FriendlyARM FTP server (Version 6.4/OpenBSD/Linux-ftpd-0.17) ready.
Name (192.168.1.230:dev): root
331 Password required for root.
Password:
230 User root logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd /tmp
250 CWD command successful.
ftp> put hello
local: hello remote: hello
200 PORT command successful.
150 Opening BINARY mode data connection for 'hello'.
226 Transfer complete.
39082 bytes sent in 0.01 secs (7352.3 kB/s)
ftp> put hello.desktop
local: hello.desktop remote: hello.desktop
200 PORT command successful.
150 Opening BINARY mode data connection for 'hello.desktop'.
226 Transfer complete.
97 bytes sent in 0.06 secs (1.7 kB/s)
ftp> quit

Running the app on the mini2440
In terminal on the 2440:
chmod +x hello
mv hello /opt/Qtopia/bin
mv hello.desktop /opt/Qtopia/apps/Applications

Reboot the MINI2440

Hello2440 should now appear in the Applications menu, where you can run it.

Where to go from here...
Along with the tooling you also installed the Qtopia documentation. To find the api docs, tutorials and lots of other information, point your browser here:

Qtopia docs:
file:///opt/FriendlyARM/mini2440/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/doc/html/index.html

Qte docs:
file:///opt/FriendlyARM/mini2440/x86-qtopia/qtopia-2.2.0-FriendlyARM/qt2/doc/html/index.html

Good luck 
Hope this guide is helpful and good luck with your own projects. 

78 comments:

  1. i have problem with
    " Add the bins to your path sudo gedit /etc/bash.bashrc (and add this line: PATH=$PATH:/usr/local/arm/4.3.2/bin )"

    where exactly to put PATH

    thx in advance

    ReplyDelete
    Replies
    1. I always get this errors :
      any solutions ?

      checking for Qtopia... ./configure: line 24305: test: : integer expression expected
      configure: error: Cannot link small Qtopia Application. For more details look at
      the end of config.log
      make: *** No targets specified and no makefile found. Stop.
      strip: 'konq-embed/src/konqueror': No such file
      cp: cannot stat `konq/konq-embed/src/konqueror': No such file or directory
      mkdir: cannot create directory `qtopia-2.2.0-FriendlyARM/qtopia/image/opt/Qtopia/pics/konqueror': No such file or directory
      cp: cannot create regular file `qtopia-2.2.0-FriendlyARM/qtopia/image/opt/Qtopia/pics/konqueror': No such file or directory
      cp: cannot create regular file `qtopia-2.2.0-FriendlyARM/qtopia/image/opt/Qtopia/apps/Applications': No such

      Delete
  2. I added it to the very end of the file.

    Alternatively, you can add it to the /etc/environment file editing the PATH entry to:

    PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/arm/4.3.2/bin"

    HTH

    ReplyDelete
  3. Thank you so much, this was really helpful :)

    ReplyDelete
  4. You did a great work, thank you.

    ReplyDelete
  5. Congratulations for your help.
    google answer a lot but I don't know how to build-all, can you help?

    root@VirtualBoxUbuntu:/opt/FriendlyARM# build-all
    build-all: command not found

    thank you
    ximo

    ReplyDelete
  6. good work , better that official docs.

    I can compile leds in ubuntu 9.10 (I dislike RH too) but have troubles with I2c examples with a ton of errors.
    Is it because the libs that gcc tries to use and that are x86 instead of the one for mini2440 ?

    ReplyDelete
  7. Thanks for these instructions, very useful !

    Now, I'm trying to compile the examples included with QT Creator to make them work on the mini2440, but it don't work...

    Anyone know if is possible to compile a project created with Qt Creator to make it work on qtopia, on the mini2440 ??

    Thanks in advance !

    ReplyDelete
  8. to ximo
    try to use ./build-all instead of build-all
    regards
    M.Hamed

    ReplyDelete
  9. hi
    for installing x86-qtopia i hav a small problem at end, u said given line17 --hello -qws insted of the path what u given path i specified but again some error,but one more thing qtopia/bin there is no -qws such file,what shell do ,plz help me and one more thing how to create yaffs root filesystem for my own application plz suggest me

    ReplyDelete
  10. hi gopinath,

    I'm not sure I understand the question.

    Stephane,

    I believe you can use creator (the old version is installed along with x86qtopia) to generate the ui portion of the app. I didnt get anywhere with that though so I'm just use build scripts for the moment.

    ReplyDelete
  11. Hey Man, thanks for all this stuff. :-)

    Regards from Brazil

    ReplyDelete
  12. thanks so much for your help. But i don't understand this:
    Edit the four files below as noted:
    sudo gedit /opt/FriendlyARM/mini2440/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/src/libraries/qtopia/qmemoryfile_unix.cpp
    line 141: --- f = ::open(tmpFile.latin1(), O_CREAT | O_WRONLY);
    line 141: +++ f = ::open(tmpFile.latin1(), O_CREAT | O_WRONLY, (S_IRUSR|S_IWUSR));

    i have to relpace the first line with the second?
    what "---" and "+++" mean?
    Thanks in advance!

    ReplyDelete
  13. Hi Anon,

    For those files, remove the --- lines and replace them with the +++ lines. I also bolded the changes, so it's easier to see what changes need to be made.

    HTH.

    ReplyDelete
  14. Very great article please continue in this way, goob job on mini2440 are rare.

    ReplyDelete
  15. Thank you Impossible! you saved my day! very very helpful Tutorial!
    could you manage a tutorial that shows working with GPIO using C Programming?

    ReplyDelete
  16. Hi impossible
    Thanks a lot!!! Your article is very good.
    i don't know where to continue. I read Qtopia and Qt doc, tried to write the "hello" example by myself. But i didn't success. i'm looking for a programming environment such as VC++ on windowns.
    Please help me write the "hello" example!

    bye
    nhat

    ReplyDelete
  17. hi thanks for the guide, i have already install the compiller The arm-linux-gcc-4.3.2, but now i want to install a webserver in my mini2440, ive been searching for information and i found that i have to doit but with cross compiling any idea how can i do it?

    im using ubuntu 9.10

    thanks

    ReplyDelete
  18. Hi, I dont know how can I thank you,

    This is great !!!

    ReplyDelete
  19. help me pleaseeei use Ubuntu9.10

    checking for meinproc... compiled
    checking for Qtopia... ./configure: line 24305: test: : integer expression expected
    configure: error: Cannot link small Qtopia Application. For more details look at
    the end of config.log
    make: *** No targets specified and no makefile found. Stop.
    strip: 'konq-embed/src/konqueror': No such file
    cp: cannot stat `konq/konq-embed/src/konqueror': No such file or directory
    mkdir: cannot create directory `qtopia-2.2.0-FriendlyARM/qtopia/image/opt/Qtopia/pics/konqueror': No such file or directory
    cp: cannot create regular file `qtopia-2.2.0-FriendlyARM/qtopia/image/opt/Qtopia/pics/konqueror': No such file or directory
    cp: cannot create regular file `qtopia-2.2.0-FriendlyARM/qtopia/image/opt/Qtopia/apps/Applications': No such file or directory


    not complete...... why hapen

    ReplyDelete
  20. hi mr.Kolry,

    Can you paste the full command and path that you were running?

    ReplyDelete
  21. checking for meinproc... compiled
    checking for Qtopia... ./configure: line 24305: test: : integer expression expected
    configure: error: Cannot link small Qtopia Application. For more details look at
    the end of config.log
    make: *** No targets specified and no makefile found. Stop.
    strip: 'konq-embed/src/konqueror': No such file
    cp: cannot stat `konq/konq-embed/src/konqueror': No such file or directory
    mkdir: cannot create directory `qtopia-2.2.0-FriendlyARM/qtopia/image/opt/Qtopia/pics/konqueror': No such file or directory
    cp: cannot create regular file `qtopia-2.2.0-FriendlyARM/qtopia/image/opt/Qtopia/pics/konqueror': No such file or directory
    cp: cannot create regular file `qtopia-2.2.0-FriendlyARM/qtopia/image/opt/Qtopia/apps/Applications': No such file or directory
    root@ubuntu:/opt/FriendlyARM/mini2440/x86-qtopia#

    ReplyDelete
  22. .
    .
    .
    checking for stdint.h... (cached) yes
    checking for poll in -lpoll... no
    checking CoreAudio/CoreAudio.h usability... no
    checking CoreAudio/CoreAudio.h presence... no
    checking for CoreAudio/CoreAudio.h... no
    checking for res_init... yes
    checking if res_init needs custom prototype... no
    checking for killpg in -lucb... no
    checking for int... yes
    checking size of int... 4
    checking for long... yes
    checking size of long... 4
    checking for char *... yes
    checking size of char *... 4
    checking for char... yes
    checking size of char... 1
    checking for dlopen in -ldl... yes
    checking for shl_unload in -ldld... no
    checking for vsnprintf... yes
    checking for snprintf... yes
    checking for pthread_create in -lpthread... yes
    checking for extra includes... no
    checking for extra libs... no
    checking for libz... -lz
    checking for libpng... -lpng -lz -lm
    checking for libjpeg6b... no
    checking for libjpeg... -ljpeg
    checking for Qt... libraries /opt/FriendlyARM/mini2440/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/lib, headers /opt/FriendlyARM/mini2440/x86-qtopia/qtopia-2.2.0-FriendlyARM/qt2/include
    checking for moc... /opt/FriendlyARM/mini2440/x86-qtopia/qtopia-2.2.0-FriendlyARM/qt2/bin/moc
    checking if Qt needs -ljpeg... no
    checking for rpath... yes
    checking for KDE... will be installed in /usr/local/kde
    checking for KDE paths... defaults
    checking for dcopidl... compiled
    checking for dcopidl2cpp... compiled
    checking for mcopidl... compiled
    checking for artsc-config... compiled
    checking for kde-config... compiled
    checking for meinproc... compiled
    checking for Qtopia... ./configure: line 24305: test: : integer expression expected
    configure: error: Cannot link small Qtopia Application. For more details look at
    the end of config.log
    make: *** No targets specified and no makefile found. Stop.
    strip: 'konq-embed/src/konqueror': No such file
    cp: cannot stat `konq/konq-embed/src/konqueror': No such file or directory
    mkdir: cannot create directory `qtopia-2.2.0-FriendlyARM/qtopia/image/opt/Qtopia/pics/konqueror': No such file or directory
    cp: cannot create regular file `qtopia-2.2.0-FriendlyARM/qtopia/image/opt/Qtopia/pics/konqueror': No such file or directory
    cp: cannot create regular file `qtopia-2.2.0-FriendlyARM/qtopia/image/opt/Qtopia/apps/Applications': No such file or directory
    root@ubuntu:/opt/FriendlyARM/mini2440/x86-qtopia#

    ReplyDelete
  23. i use lastest version x86-Qtopia 2.2.0 (2010-01-08) from http://www.friendlyarm.net/downloads

    thnak you very mouch

    ReplyDelete
  24. Hello,
    I am getting the same error as Mr. Kolry.
    I am running Ubuntu 9.10 (32bit). I downloaded
    x86-qtopia-2.2.0_20100108.tgz and arm-qtopia-2.2.0_20100108.tgz from FriendlyArm.net. I followed your directions but when I try to ./build-all it ends up with the following error:
    .
    .
    checking for meinproc... compiled
    checking for Qtopia... ./configure: line 24305: test: : integer expression expected
    configure: error: Cannot link small Qtopia Application. For more details look at
    the end of config.log
    make: *** No targets specified and no makefile found. Stop.
    strip: 'konq-embed/src/konqueror': No such file
    cp: cannot stat `konq/konq-embed/src/konqueror': No such file or directory
    mkdir: cannot create directory `qtopia-2.2.0-FriendlyARM/qtopia/image/opt/Qtopia/pics/konqueror': No such file or directory
    cp: cannot create regular file `qtopia-2.2.0-FriendlyARM/qtopia/image/opt/Qtopia/pics/konqueror': No such file or directory
    cp: cannot create regular file `qtopia-2.2.0-FriendlyARM/qtopia/image/opt/Qtopia/apps/Applications': No such file or directory
    ron@ubuntu:/opt/FriendlyARM/mini2440/x86-qtopia$

    Any help will be greatly appreciated.
    Thanks.

    ReplyDelete
  25. Hi Everyone,

    I've added a post with all the build scripts I used for the tutorial.

    http://equallybad.blogspot.com/2010/04/x86-qtopia-and-arm-qtopia-build-scripts.html

    Let me know if these scripts help resolve any of the build issues.

    Good luck!

    ReplyDelete
  26. Used your latest build scripts and still got a similar problem as above. Here are the specifics:

    .....
    checking CoreAudio/CoreAudio.h presence... no
    checking for CoreAudio/CoreAudio.h... no
    checking for res_init... yes
    checking if res_init needs custom prototype... no
    checking for killpg in -lucb... no
    checking for int... yes
    checking size of int... 4
    checking for long... yes
    checking size of long... 4
    checking for char *... yes
    checking size of char *... 4
    checking for char... yes
    checking size of char... 1
    checking for dlopen in -ldl... yes
    checking for shl_unload in -ldld... no
    checking for vsnprintf... yes
    checking for snprintf... yes
    checking for pthread_create in -lpthread... yes
    checking for extra includes... no
    checking for extra libs... no
    checking for libz... configure: error: not found. Check your installation and look into config.log
    make: *** No targets specified and no makefile found. Stop.
    strip: 'konq-embed/src/konqueror': No such file
    cp: cannot stat `konq/konq-embed/src/konqueror': No such file or directory
    cp: cannot create regular file `qtopia-2.2.0-FriendlyARM/qtopia/image/opt/Qtopia/apps/Applications': No such file or directory
    root@Linux2:/opt/FriendlyARM/mini2440/x86-qtopia#

    ReplyDelete
  27. Hi Joe,

    Can you confirm that you have these libraries installed?

    zlib1g and zlib1g-dev

    ReplyDelete
  28. has anyone had any luck building an app with qt creator and running it on the mini 2440?

    ReplyDelete
  29. hey.., am trying to compile my example for arm using qmake .., please suggest me a procedure to do qmakeand environment paths

    ReplyDelete
  30. @Impossible,

    I am facing the same issue as Joe C.

    These packages are defiantly installed.

    My output is:
    checking for Qtopia... ./configure: line 24305: test: : integer expression expected
    configure: error: Cannot link small Qtopia Application. For more details look at
    the end of config.log
    make: *** No targets specified and no makefile found. Stop.
    strip: 'konq-embed/src/konqueror': No such file
    cp: cannot stat `konq/konq-embed/src/konqueror': No such file or directory
    cp: cannot create regular file `qtopia-2.2.0-FriendlyARM/qtopia/image/opt/Qtopia/apps/Applications': No such file or directory


    I have tried the individual builds and its dieing on Qtopia with this error:

    x86-qtopia/qtopia-2.2.0-FriendlyARM/qt2/lib -lqte
    /usr/bin/ld: cannot find -luuid
    collect2: ld returned 1 exit status


    Any help would be greatly appreciated.

    Cheers,

    Jon

    ReplyDelete
  31. Hi Jon, The package "uuid-dev" should install the libuuid library to /usr/lib/libuuid.so. Can you verify you have that installed? Also, which command are you executing?

    ReplyDelete
  32. Hi impossible

    The library /usr/lib/libuuid.so is not there.

    However I have installed it - yum install uuid-devel

    Package uuid-devel-1.6.1-8.fc12.i686 already installed and latest version

    I am running build-all from:
    /opt/FriendlyARM/mini2440/x86-qtopia/


    I imagine there is a issue with the missing libuuid.so file yet fedora knows its installed.

    ReplyDelete
  33. SOLUTION

    Good news everybody!

    Thanks for Impossible for saying "The package "uuid-dev" should install the libuuid library to /usr/lib/libuuid.so"

    This was not the case. However after digging around I found that the library was in actual fact installed into /lib (Must have been Fedora 12 issue).

    TO SOLVE THIS:

    cd to /usr/lib and create a symbolic link using this command...

    ln -s ../../lib/libuuid.so.1 libuuid.so

    This library now should work. Run a make clean and ./build-all and your Qtopia installation should work.

    Well it did for me :).

    ReplyDelete
  34. Hi Jon,

    Great find. Thanks for posting a solution.

    ReplyDelete
  35. I think on the lines:
    line 143: --- f = ::open(tmpFile.latin1(), O_CREAT | O_WRONLY);
    line 143: --- f = ::open(tmpFile.latin1(), O_CREAT | O_WRONLY, (S_IRUSR|S_IWUSR));

    You meant:

    line 143: --- f = ::open(tmpFile.latin1(), O_CREAT | O_WRONLY);
    line 143: +++ f = ::open(tmpFile.latin1(), O_CREAT | O_WRONLY, (S_IRUSR|S_IWUSR));

    By the way, my version of the code has the following line:
    f = ::open(tmpFile.latin1(), O_CREAT | O_WRONLY, 0777);

    You didn't say where to download the x86-qtopia, so I downloaded it from the http://www.friendlyarm.net website. I am going to presume that their version will not have the problems as you have stated and that 0777 will be the same as S_IRUSR|S_IWUSR. If not I will need to hunt down the root cause of the errors you were seeing to put in the correct fix for my version.

    ReplyDelete
  36. I downloaded arm-qtopia from http://www.microarmsystems.com. After extracting, the files were placed into /opt/FriendlyARM/mini2440/arm-qtopia, not the mini2440 directory. In this case I think the line of your instructions: cd /opt/FriendlyARM/mini2440/ would need to be changed to cd /opt/FriendlyARM/mini2440/arm-qtopia instead before manually extracting the files.

    ReplyDelete
  37. As it turned out the x86-qtopia I downloaded from http://www.friendlyarm.net worked fine with the 0777 in place of your S_IRUSR|S_IWUSR fix. Apparently they have updated their files- if that was your original source. Also I had trouble logging in as root. As I recall, you need to set up a root password before this can be used. Instead I logged in as plg with password plg. In my FriendlyARM terminal (minicom) I had to change the mode for the tmp directory to allow permissions from the ftp side to write the directory. The command I used was:
    cd /
    chmod o=rwx tmp

    ReplyDelete
  38. One more comment and I will be on my way. For those who may be confused by the phrase "In terminal on the 2440:". The best way to do this is as follows:
    Windows: Download Hyperterminal Private Edition
    Linux:
    1. Open a terminal window
    2. Enter cmd: sudo apt-get install minicom
    3. Enter cmd: sudo minicom -s
    4. Serial port setup
    +---------------------------------------+
    | A - Serial Device : dev/ttyS0 |
    | B - Lockfile Location : /var/lock |
    | C - ... |
    | D - ... |
    | E - Bps/Par/Bits : 115200 8N1 |
    | F - Hardware flow control : no |
    | G - Software flow control : no |
    | Change which settings? |
    +---------------------------------------+
    5. Exit
    6. Enter cmd "minicom"
    7. Attach the serial cable from your Mini2440 device to the serial port on your computer.
    8. Turn on the Mini2440 device.
    9. Press "enter" when directed to do so.
    If successfull you will get the following prompt:
    [root@FriendlyARM /]#
    Now you can navigate your FriendlyARM device from your Linux PC keyboard.

    ReplyDelete
  39. Thank a lot for useful tutorial

    ReplyDelete
  40. hi imposiible!
    thanks u very much for your instructions. but i have a problem when i build "hello" example. i try my best to do but i can't succeed. can u tell me more specifically?
    PS: when i build, the error is that: "./run-hello: 17: +++/home/kokoobk/test/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/bin/hello-qws: not found."
    can u help me? thanks first. i'm looking forward to hearing your info soon.;)

    ReplyDelete
  41. Hi Anon,

    You have to install the software into the directory: /opt/FriendlyARM/mini2440

    and run the example from within the installed packages e.g. /opt/FriendlyARM/mini2440/x86qtopia

    ReplyDelete
  42. Great work.. Keep it work..

    ReplyDelete
  43. hi all,

    i am getting the following error while building hello in x86-qtopia.

    can anyone help me to solve this.

    [root@localhost hello]# ./build
    ./build: line 3:
    /opt/FriendlyARM/mini2440/x86-qtopia/qtopia-2.2.0-FriendlyARM/setQpeEnv: No
    such file or directory
    Failure to read QMAKESPEC conf file
    /opt/FriendlyARM/mini2440/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/mkspecs/qws
    /linux-generic-g++/qmake.conf.
    Error processing project file:
    /home/ssmanohar/opt/FriendlyARM/mini2440/x86-qtopia/hello/hello.pro
    make: *** No rule to make target
    `/opt/FriendlyARM/mini2440/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/mkspecs/qw
    s/linux-generic-g++/qmake.conf',
    needed by `Makefile'. Stop.
    make: *** No rule to make target
    `/opt/FriendlyARM/mini2440/x86-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/mkspecs/qw
    s/linux-generic-g++/qmake.conf',
    needed by `Makefile'. Stop.

    thanx

    ReplyDelete
  44. Thank you!! Run nice in Ubuntu 10.04!
    But in the link's scripts, you need to clear "rm" and "tar" lines.
    Thank yo again!

    ..y muy buen trabajo!

    Guillermo.

    ReplyDelete
  45. Hello!

    Have you been able to write threaded applications with these tools? I've succesfully installed my tools according to your instructions and created a few applications. However, I can't compile threaded applications since I get an error that says:

    libqte-mt can't be found

    I've tried to configure qt2 again using -thread but I still won't succeed.

    Can you give me any advice?

    Thanks!

    Mikko

    ReplyDelete
  46. Hello,

    I've posted on friendlyarm forum as well but i can't solve this problem which Joe C., Jon Ambrose, Books and mr.Kolry encountered. Guess they solved, but i couldn't. I'm using ubuntu 10.04. I'm using the build* files as you described and followed your tutorial.

    I tried this soft link command but it's already linked. I mean;

    in /usr/lib i have;
    libuuid.so -> /lib/libuuid.so.1.3.0

    in /lib i have;
    libuuid.so.1.3.0
    libuuid.so.1 -> libuuid.so.1.3.0

    What can i do, i get the same error like others. Thanks.

    (Thanks for the tutorial as well...)

    Yigitalp

    ReplyDelete
  47. thanks a lot for the tutorial

    ReplyDelete
  48. This comment has been removed by the author.

    ReplyDelete
  49. Firstly, thanks for the great post!:) It worked perfectly for me, except the ending:

    (Building an example (host) part of the post)
    when I run the ./run-hello I get this instead of the output window
    shown:

    "Using display 0
    Cannot create lock file as an old version of QVFb has opened
    /tmp/qtembedded-root/QtEmbedded-0. Close other QVFb and try again
    Can't open framebuffer device /dev/fb0
    driver cannot connect"

    I have no idea what this is! I tried fuser -v /dev/fb0 but that didn't show
    anything, and "fuser -k -KILL /dev/fb0" didn't work either!

    Even running as root didn't work!

    Here is the output from the build: http://pastie.org/private/lgpty3p4y666xkm8gxcxcw

    Please do help me out! Thanks in advance!

    PS In case this matters, I'm running Ubuntu Lucid Lynx

    ReplyDelete
  50. How do you create new UI forms? I was trying to use the current QT Creator but it makes version 4.0 ui files and I think this compiler needs version 2.2, right? Do I have to manually create XML files? Thanks. (I've been sort of following http://farm2440.blogspot.com/2010/07/hello-world-with-gui-application-for.html)

    ReplyDelete
  51. Please disregard the previous post. I originally downloaded the QT Creator from http://qt.nokia.com/products/ but I've discovered the old Designer is already included in the qtopia-2.2.0-FriendlyARM/qt2/bin folder.

    ReplyDelete
  52. I did everything like described.
    When I did build-konq of the arm-qtopia I meet a error message:
    /usr/lib/libjpeg.so: could not read symbols: File in wrong format

    the similar issue described at last post:
    http://www.friendlyarm.net/forum/topic/1443

    Could you help me to solve it?

    Thank you in advance.

    ReplyDelete
  53. to tsimur and others that have found the same problem: the trouble lies in some wrong reference to /usr/lib in a .la file, you can find info about this kind of problem at http://www.metastatic.org/text/libtool.html. I saw there is a new DVD but it takes 6 days to download, so...
    After a while (cursing someone's ancestors) I did this:
    - compile as much as you can, before the error
    - manually edit the file /opt/FriendlyARM/mini2440/arm-qtopia/konq/libtool
    - modify the line 6143 (sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
    ) to sys_lib_search_path_spec=
    - build the hello sample
    It seems working

    ciao a tutti
    PF

    ReplyDelete
  54. Hi,
    Could somebody help me? I've tried to build Qtopia x86, i've modified the files and the script as the way that Impossible says. But i've obtained the following error:
    /usr/bin/ld: .obj/release-shared/transferserver.o:undefined reference to symbol 'crypt@@GLIBC_2.0'. I've got the libcrypt.so.1 in my /lib directory. What am i doing wrong?

    Thaks.

    ReplyDelete
  55. Have you tried cross-compiling a .c file using open cv for mini2440?

    ReplyDelete
  56. Hello,

    First of all, my compliments for this great tutorial, I had it "up and running" in no time.
    (Ubuntu 10.04)

    I installed QTCreator via the available synaptic packages in this ubuntu release, but when I try to open hello_base.gui with QTdesigner, it gives me an error that it can't read the file. (tags with "name" on line 6 of this file doesn't seem to be OK)

    Is there something I need to configure within QTCreator/QTDesigner, or do I need another version of this tool ?
    (I'm using Qtopia 2.2.0)

    Thank you,
    Kris

    ReplyDelete
  57. Thanks for the great tutorial. I am using Ubuntu 9.10. I successfully installed the provided gcc and g++ cross compilers.
    But I am having the same problems as Jon Ambrose and other guys. This is while building x86 qtopia(cannot link small application ....). I have uuid-dev and the associated .so file in their proper places and all dependences are satisfied.
    Arm qtopia builds without errors but I cannot build the example hello project. The run file is not produced.
    I am using the latest tarballs (2010 01 08) from friendlyARM.

    Can anyone please help me?

    Thanks,
    Harshad

    ReplyDelete
  58. ./build-konq: line 6: /opt/FriendlyARM/mini2440/arm-qtopia/qtopia-2.2.0-FriendlyARM/setQpeEnv: No such file or directory
    configure: WARNING: If you wanted to set the --build type, don't use --host.
    If a cross compiler is detected then cross compile mode will be used.
    checking build system type... i686-pc-linux-gnu
    checking host system type... arm-unknown-linux-gnu
    checking target system type... arm-unknown-linux-gnu
    checking for a BSD-compatible install... /usr/bin/install -c
    checking for -p flag to install... yes
    checking whether build environment is sane... yes
    checking for gawk... gawk
    checking whether make sets $(MAKE)... yes
    checking for arm-linux-strip... no
    checking for strip... strip
    checking for style of include used by make... GNU
    checking for arm-linux-gcc... arm-linux-gcc
    checking for C compiler default output... configure: error: C compiler cannot create executables
    See `config.log' for more details.
    make: *** No targets specified and no makefile found. Stop.
    ./build-konq: line 10: arm-linux-strip: command not found
    cp: cannot stat `qtopia-2.2.0-FriendlyARM/qtopia/image/opt': No such file or directory
    opt/Qtopia/lib/fonts/
    opt/Qtopia/lib/fonts/helvetica_120_50.qpf
    opt/Qtopia/lib/fonts/songti_160_50.qpf
    opt/Qtopia/lib/fonts/fontdir
    opt/Qtopia/lib/fonts/helvetica_120_50_t5.qpf
    cp: cannot stat `konq/konq-embed/src/konqueror': No such file or directory
    mkdir: cannot create directory `opt/Qtopia/pics/konqueror': No such file or directory
    cp: cannot create regular file `opt/Qtopia/pics/konqueror': No such file or directory
    mkdir: cannot create directory `opt/Qtopia/apps/FriendlyARM': No such file or directory
    cp: cannot create regular file `opt/Qtopia/apps/FriendlyARM/': No such file or directory
    ./mktarget: line 18: opt/Qtopia/apps/FriendlyARM/.directory: No such file or directory
    opt/
    opt/kde/
    opt/kde/share/
    opt/kde/share/apps/
    opt/kde/share/apps/khtml/
    opt/kde/share/apps/khtml/css/
    opt/kde/share/apps/khtml/css/html4.css
    opt/kde/share/config/

    ReplyDelete
  59. Can someone give the download link of the Qt designer by Trolltech for mini2440 as the cd which I have does not have it.

    ReplyDelete
  60. I followed ur blog and I am running into the following error after running ./build for x-86 qtopia. Here's the compilation log : http://pastebin.com/ywy4Nrtb.

    Please help

    ReplyDelete
  61. First of all thanks for a great tutorial.


    i have same/similar problem as Yiğitalp Ertem

    I'm using ubuntu 10.10. I
    followed your tutorial, but have encountered a problem:



    checking for meinproc... compiled
    checking for Qtopia... ./configure: line 24305: test: : integer expression expected
    configure: error: Cannot link small Qtopia Application. For more details look at
    the end of config.log
    make: *** No targets specified and no makefile found. Stop.
    strip: 'konq-embed/src/konqueror': No such file
    cp: cannot stat `konq/konq-embed/src/konqueror': No such file or directory
    mkdir: cannot create directory `qtopia-2.2.0-FriendlyARM/qtopia/image/opt/Qtopia/pics/konqueror': No such file or directory
    cp: cannot create regular file `qtopia-2.2.0-FriendlyARM/qtopia/image/opt/Qtopia/pics/konqueror': No such file or directory
    cp: cannot create regular file `qtopia-2.2.0-FriendlyARM/qtopia/image/opt/Qtopia/apps/Applications': No such file or directory



    I tried this soft link command but it's already linked.

    in /usr/lib i have;
    libuuid.so -> /lib/libuuid.so.1.3.0

    in /lib i have;
    libuuid.so.1.3.0
    libuuid.so.1 -> libuuid.so.1.3.0

    grateful for any solutions?

    ReplyDelete
  62. got it working now.
    problem with:
    make: *** No targets specified and no makefile found. Stop.

    solution:
    follow the instructions properly, especially the bit about modifying build scripts.

    regard

    ReplyDelete
  63. I'm using Linux on Friendly ARM.Is it possible to install any media player into it??
    PLease suggest me how.



    Thanks

    ReplyDelete
  64. Thanks for u r valuable information here.

    I'm successfully set-up qtopia environment on ubuntu 9.01 system.

    Initially I face lot of problems based on Fedora 14 system.

    ReplyDelete
  65. Thank you for the detailed tutorial I achieve to install all the development tools and although the compilation of x86-qtopia showed me some errors as the mentioned above I had succeed to run the qt example.

    ReplyDelete
  66. I am using fedora-14..... and all the libraries are installed......

    ReplyDelete
  67. Hey,
    I have been following this post and the equallybad blog for installing x86-qtopia and arm-qtopia on my PC running Ubuntu 9.04 but I have been unable to install them. I am getting the same errors in both installations -

    * ERROR: Building Qtopia Tools has failed.
    *
    * Please investigate the problem by looking at the error messages in the
    * make output.
    * The Qtopia tools can be build using the separate buildQtopiaTools script
    * which can be found in the qtopia/scripts directory of the package. The
    * script is also invoked with the command 'make tools' from the package root
    * directory.
    *
    * On most machines the default configuration options in the script works fine.
    * In case this doesn't work the configure parameters in the buildQtopiaTools
    * script need to be tweaked to fit the environment/compiler used on the machine
    * and then run manually from the cmd line.
    *
    * Please make sure that the following binaries exist before trying to build
    * Qtopia:
    * /opt/FriendlyARM/mini2440/arm-qtopia/qtopia-2.2.0-FriendlyARM/qt2/bin/moc
    * /opt/FriendlyARM/mini2440/arm-qtopia/qtopia-2.2.0-FriendlyARM/qt2/bin/uic
    * /opt/FriendlyARM/mini2440/arm-qtopia/qtopia-2.2.0-FriendlyARM/qt2/bin/qvfb
    * /opt/FriendlyARM/mini2440/arm-qtopia/qtopia-2.2.0-FriendlyARM/dqt/bin/lrelease
    * /opt/FriendlyARM/mini2440/arm-qtopia/qtopia-2.2.0-FriendlyARM/dqt/bin/lupdate
    *
    * As a rule these tools need to be built only once.
    *

    cp: cannot stat `konq/konq-embed/src/konqueror': No such file or directory
    mkdir: cannot create directory `opt/Qtopia/pics/konqueror': No such file or directory
    cp: cannot create regular file `opt/Qtopia/pics/konqueror': No such file or directory
    mkdir: cannot create directory `opt/Qtopia/apps/FriendlyARM': No such file or directory
    cp: cannot create regular file `opt/Qtopia/apps/FriendlyARM/': No such file or directory
    ./mktarget: line 18: opt/Qtopia/apps/FriendlyARM/.directory: No such file or directory

    What could be the problem? :(
    Thanks.

    ReplyDelete
    Replies
    1. hi Tarin, i have the same problem... did u resolve it?? please help me
      Thanks

      Delete
    2. me too, i'm stuck here for week, please help

      Delete
  68. Hi,
    Thanks for this tutorial. I need help with Touchscreen.
    I compiled Qt and tslib successfully.
    Typing "cat /dev/input/ts" works as mentioned (weird chars when touched).
    ts_calibrate and ts_test work fine too (touch screen is working fine).

    If I use "export QWS_MOUSE_PROTO=tslib:/dev/input/ts" it shows "Segmentation fault". When I replace this line by just "export QWS_MOUSE_PROTO=" (without "driver:options") my "Hello World" shows perfectly, but no touch screen.

    Compiling Qt with "-no-freetype" generates the same result: "Segmentation fault".

    I can't find a way to work touch with my app.

    Any suggestion?
    Thank you.
    Afonso.

    ReplyDelete
  69. Hi,
    I have same/similar problem too,
    ./build
    found error ...: cannot find -lqtopia2 ..bla bla

    build file -->
    #!/bin/bash

    source /home/xadmin/armgcc/arm-qtopia/qtopia-2.2.0-FriendlyARM/setQpEnv qmake -spec /home/xadmin/armgcc/arm-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/mkspecs/qws/linux-arm-g++ -o Makefile *.pro

    make clean
    make


    Can anyone please help me?
    Thanks.
    Rudren.

    ReplyDelete
  70. For those who are looking to acquire a way so you can get therapeutic relief from an expert sizegenetics who is also very sexy, then here is the way to go about it. You please do not would need to run the risk of using an ad service to find these types of service as you will get qualified sizegeneticss who are likely to be free to give you a gay sizegenetics based upon your terms. What is more to getting a gay therapeutic sizegenetics that will actually help you become feel much better, you could will also get a gay erotic sizegenetics coupled with a sensual sizegenetics. While you're looking to obtain a gay sizegenetics, there are numerous options from which you'll choose.
    http://buysizegeneticsonline.tumblr.com/

    ReplyDelete
  71. Hello,
    I am same application in qt (install a qt qt-everywhere-opensource-src-4.6.3 in my system) i am create Hello application and it cross compile and inserted on board and run hello -qws but error is missing lib of qt.How to cross compile the all qt-4 lib for mini2440 board...

    ReplyDelete
  72. Thanks for your guidence in building qt for mini 2440.I faced some problems while configuring Qt by following command
    ./configure -embedded arm -xplatform qws/linux-arm-g++ -prefix /usr/local/Qt -qt-mouse-tslib -little-endian -no-webkit -no-qt3support -no-cups -no-largefile -optimized-qmake -no-openssl -nomake tools -qt-sql-sqlite -no-3dnow -system-zlib -qt-gif -qt-libtiff -qt-libpng -qt-libmng -qt-libjpeg -no-opengl -gtkstyle -no-openvg -no-xshape -no-xsync -no-xrandr -qt-freetype -qt-gfx-linuxfb -qt-kbd-tty -qt-kbd-linuxinput -qt-mouse-tslib -qt-mouse-linuxinput

    I got the following error….

    project.o: could not read symbols: File in wrong format
    collect2: ld returned 1 exit status
    make: *** [/usr/local/qt-everywhere-opensource-src-4.6.3/bin/qmake] Error 1

    please help me

    ReplyDelete