"applet not found" when trying to run an application on embedded linux



  • Hi,

    After configuring, making and installing qt for embedded linux and using it in my qt creator i want to try a little application on my boar (a simple window+button msgbox). But when i try to run the application with "./" (and with a chmod 755) i have this error "applet not found".
    Do i have to copy other things aside from teh executable to the board, like libraries and if yes where can i find this kind of files i need ?


  • Lifetime Qt Champion

    Hi,

    Unless you build Qt statically, you need to have it installed on your target. The dlls you need depends on your application has well as your Qt version. What is your current setup ?



  • Hi,

    I configured my qt like this :
    ./configure -opensource -confirm-license -prefix /usr/local/Qt-4.8.5-arm -embedded arm -little-endian -no-pch -xplatform qws/linux-arm-gnueabi-g++

    Which i guess is not statically, after ready the configure help i think i must add -static and reconfigure my qt once again right ? Ten i will only have to copy the executable to the target device ?

    Also one question (sorry if this is not in relation with the thread), my application will use a touchscreen so i should configure qt with -qt-mouse-tslib i think ?



  • After trying to configure qt like this :

    ./configure -opensource -confirm-license -prefix /usr/local/Qt-4.8.5-arm -embedded arm -little-endian -no-pch -xplatform qws/linux-arm-gnueabi-g++ -static -qt-mouse-tslib

    i get the error :

    The tslib functionality test failed!
    You might need to modify the include and library search paths by editing
    QMAKE_INCDIR and QMAKE_LIBDIR in (my device in qt)

    After reading a little i tried to cross compile tslib to then add the include dir and lib dir to qt.
    So i configure it for my arm :

    ./configure --prefix=$HOME/dev/tslib_arm --host=arm-linux-gnueabi

    then i "make" it, no problem.

    But when trying to "sudo make install" i have the error :

    libtool: install: error: cannot install `linear.la' to a directory not ending in /home/spi/dev/tslib_arm/lib/ts/

    If i ignore this and edit the qmake in Qt to give it the include/lib directories i still have the first error message.


  • Lifetime Qt Champion

    Did you re-configure from a clean source tree ? If not, then first clean the sources and then reconfigure. Otherwise you can also out of source build so if something goes wrong you can simply nuke the folder and restart directly.



  • @SGaist

    I eraded all my source folder, then extracted them again. This way i will have clean folders to work with.
    I use :
    qt-everywhere-opensource-src-4.8.5 as source for QT
    gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux as toolchain
    tslib-1.0 because of the touchscreen

    I go into the lslib-1.0 folder, i chmod a+x autogen.sh and run it, then i configure tslib:

    ./configure --host=arm-linux-gnueabi --prefix=/usr/local/tslib --enable-static --enable-shared

    No error message here.

    I try to "make" it. Error :

    ts_test.c:(.text.startup+0x320): undefined reference to rpl_malloc' fbutils.o: In functionopen_framebuffer':
    fbutils.c:(.text+0x110): undefined reference to `rpl_malloc'

    I erase the folder, extract it again to be clean. Chmod autogen.sh, run it.
    I configure tslib again.
    I go into config.h and comment the line :

    #define malloc rpl_malloc

    I try to make it again, another error :

    In function ‘open’,
    inlined from ‘main’ at ts_calibrate.c:227:11:
    /usr/lib/gcc-cross/arm-linux-gnueabi/4.7/../../../../arm-linux-gnueabi/include/bits/fcntl2.h:50:24: error: call to ‘__open_missing_mode’ declared with attribute error: open with O_CREAT in second argument needs 3 arguments

    In function ‘open’,
    inlined from ‘main’ at ts_calibrate.c:229:11:
    /usr/lib/gcc-cross/arm-linux-gnueabi/4.7/../../../../arm-linux-gnueabi/include/bits/fcntl2.h:50:24: error: call to ‘__open_missing_mode’ declared with attribute error: open with O_CREAT in second argument needs 3 arguments
    make[2]: *** [ts_calibrate.o] Error 1
    make[2]: Leaving directory /home/spi/installQt/tslib-1.0/tslib-1.0/tests' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory/home/spi/installQt/tslib-1.0/tslib-1.0'
    make: *** [all] Error 2

    After looking on the internet it seems a lot of people are having a really bad time using qt with arm devices, especially with tslib.



  • Hi,

    I finanlly installed qt statically with tslib but i still have this "applet not found" error when running the application.

    I used this :
    qt-everywhere-opensource-src-4.8.5
    gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux
    tslib-1.0

    I first configured my tslib with my compiler an i enabled static too :

    chmod a+x autogen.sh
    ./autogen.sh

    ./configure CC=/home/spi/installQt/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/arm-linux-gnueabihf-gcc CXX=/home/spi/installQt/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/arm-linux-gnueabihf-g++ --prefix=/home/spi/installQt/tslib-arm --host=arm-linux-gnueabihf --enable-shared=yes --enable-static=yes

    make
    make install

    No error for now.

    I change the qmake in Qt to work with my compiler and with tslib :

    include(../../common/linux.conf)
    include(../../common/gcc-base-unix.conf)
    include(../../common/g++-unix.conf)
    include(../../common/qws.conf)

    QMAKE_CC = /home/spi/installQt/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/arm-linux-gnueabihf-gcc
    QMAKE_CXX = /home/spi/installQt/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/arm-linux-gnueabihf-g++
    QMAKE_LINK = /home/spi/installQt/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/arm-linux-gnueabihf-g++
    QMAKE_LINK_SHLIB = /home/spi/installQt/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/arm-linux-gnueabihf-g++

    QMAKE_AR = /home/spi/installQt/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/arm-linux-gnueabihf-ar cqs
    QMAKE_OBJCOPY = /home/spi/installQt/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/arm-linux-gnueabihf-objcopy
    QMAKE_STRIP = /home/spi/installQt/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/arm-linux-gnueabihf-strip
    QMAKE_INCDIR += /home/spi/installQt/tslib-arm/include
    QMAKE_LIBDIR += /home/spi/installQt/tslib-arm/lib

    load(qt_config)

    I configured qt :

    ./configure -opensource -confirm-license -prefix /usr/local/Qt-4.8.5-arm-linux -embedded arm -little-endian -no-pch -xplatform qws/linux-arm-gnueabi-g++ -qt-mouse-tslib -no-webkit -no-qt3support -no-cups -no-largefile -optimized-qmake -no-openssl -nomake tools -static

    Static and with qt-mouse-tslib to use the touch screen (i don't think i need another option to display too but please correct me if i made mistake)

    make
    sudo make install

    No error yet.

    I create the new kit in qt creator by selecting the qmake of this qt (/usr/local/Qt-4.8.5-arm-linux/bin/) and the good compiler (/home/spi/installQt/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/arm-linux-gnueabihf-g++).

    I add the argument to make :
    ARCH=arm CROSS_COMPILE=/home/spi/installQt/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/arm-linux-gnueabihf-

    I want to add the argument to qmake :
    -spec linux-arm-gnueabi-g++

    But when adding it i have erros message in qt creator :
    /usr/local/Qt-4.8.5-arm-linux/mkspecs/linux-arm-gnueabi-g++/qmake.conf:6: warning: Unable to find file for inclusion ../../common/linux.conf

    /usr/local/Qt-4.8.5-arm-linux/mkspecs/linux-arm-gnueabi-g++/qmake.conf:7: warning: Unable to find file for inclusion ../../common/gcc-base-unix.conf

    /usr/local/Qt-4.8.5-arm-linux/mkspecs/linux-arm-gnueabi-g++/qmake.conf:8: warning: Unable to find file for inclusion ../../common/g++-unix.conf

    /usr/local/Qt-4.8.5-arm-linux/mkspecs/linux-arm-gnueabi-g++/qmake.conf:9: warning: Unable to find file for inclusion ../../common/qws.conf

    If i don't put the argument and before running the application use the environment :
    export QWS_MOUSE_PROTO=tslib:/usr/input/ts
    export QWS_DISPLAY=LinuxFB:mmWidth=480:mmHeight=272

    I get the error "applet not found".


  • Lifetime Qt Champion

    You don't need to pass anything special to qmake if you just want to build your application. Same goes for ARCH and CROSS_COMPILE, they should not be needed.



  • @SGaist
    After trying to compile a little simple "hello world" with the compiler i use here i noticed the same issue because i made an error in one of my previous path making me think the compiler was working.
    I now found a compiler working (arm-linux-gcc-3.4.5-glibc-2.3.6-linux), with this one and when being sure of the path the compilation of a little .c file is working an run on the board but now i have a news error :

    I followed the same steps.
    I configured qt like this :

    ./configure -embedded arm -little-endian -no-armfpa -qt-gfx-transformed -qt-gfx-linuxfb -nomake demos -nomake examples -no-svg -no-phonon -no-qt3support -lrt -no-feature-CURSOR -qt-mouse-tslib -xplatform qws/linux-arm-g++

    Still no error at this point.

    But when i want to "make" qt i have this error now :

    g++ -c -include .pch/release-shared-emb-arm/QtCore -pipe -pipe -pipe -fno-exceptions -O2 -O2 -O2 -fvisibility=hidden -fvisibility-inlines-hidden -fvisibility=hidden -fvisibility=hidden -fvisibility-inlines-hidden -Wall -W -Wall -W -Wall -W -D_REENTRANT -D_REENTRANT -D_REENTRANT -fPIC -fPIC -fPIC -DQT_SHARED -DQT_BUILD_CORE_LIB -DQT_NO_USING_NAMESPACE -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DHB_EXPORT=Q_CORE_EXPORT -DQT_NO_DEBUG -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -I../../mkspecs/qws/linux-arm-g++ -I. -I../../include -I../../include/QtCore -I.rcc/release-shared-emb-arm -Iconcurrent -Iglobal -I../3rdparty/harfbuzz/src -I.moc/release-shared-emb-arm -I.uic/release-shared-emb-arm -I/home/spi/installQt/tslib-arm/include -o .obj/release-shared-emb-arm/qfutureinterface.o concurrent/qfutureinterface.cpp
    ../../include/QtCore/../../src/corelib/arch/qatomic_arm.h: Assembler messages:
    ../../include/QtCore/../../src/corelib/arch/qatomic_arm.h:111: Error: no such instruction: swpb %cl,%dl,[%ebp]' ../../include/QtCore/../../src/corelib/arch/qatomic_arm.h:111: Error: no such instruction:swpb %dl,%sil,[%ebp]'
    ../../include/QtCore/../../src/corelib/arch/qatomic_arm.h:111: Error: no such instruction: swpb %sil,%cl,[%ebp]' ../../include/QtCore/../../src/corelib/arch/qatomic_arm.h:111: Error: no such instruction:swpb %cl,%dl,[%ebp]'
    ../../include/QtCore/../../src/corelib/arch/qatomic_arm.h:111: Error: no such instruction: swpb %dl,%dil,[%ebp]' ../../include/QtCore/../../src/corelib/arch/qatomic_arm.h:111: Error: no such instruction:swpb %cl,%dl,[%ebp]'
    ../../include/QtCore/../../src/corelib/arch/qatomic_arm.h:111: Error: no such instruction: swpb %cl,%dl,[%ebp]' ../../include/QtCore/../../src/corelib/arch/qatomic_arm.h:111: Error: no such instruction:swpb %dl,%sil,[%ebp]'
    ../../include/QtCore/../../src/corelib/arch/qatomic_arm.h:111: Error: no such instruction: swpb %sil,%cl,[%ebp]' ../../include/QtCore/../../src/corelib/arch/qatomic_arm.h:111: Error: no such instruction:swpb %dl,%dil,[%ebp]'
    ...
    repeating more until :
    ...
    ../../include/QtCore/../../src/corelib/arch/qatomic_arm.h:111: Error: no such instruction: swpb %cl,%dl,[%edi]' ../../include/QtCore/../../src/corelib/arch/qatomic_arm.h:111: Error: no such instruction:swpb %dl,%sil,[%edi]'
    ../../include/QtCore/../../src/corelib/arch/qatomic_arm.h:111: Error: no such instruction: swpb %cl,%dl,[%edi]' make[1]: *** [.obj/release-shared-emb-arm/qfutureinterface.o] Error 1 make[1]: Leaving directory/home/spi/installQt/qt-embedded-linux-opensource-src-4.4.3/src/corelib'
    make: *** [sub-corelib-make_default-ordered] Error 2


  • Lifetime Qt Champion

    That's a way too old compiler. IIRC, 4.1.1 is the minimum version



  • I installed the last version of gcc-arm-linux-gnueabi but when compiling a .c (which when compiling with the gcc 3.4.5 works on my board) and trying to run i get a
    "No such file or directory" even after a chmod 755.

    Now when compiling qt4.5.1 with gcc 3.4.5 i have no more error in the configuration, in the make, in the make install. Creating the kit in qt creator don't generate an error, building the app and the qmake seems to work to because i have an executable in the release folder and no error message.

    I copied my qt folder and my tslib folder at the exact same place on the board as where it is on the dev platform (my ubuntu pc). Then i change the environement variable as :

    export QWS_MOUSE_PROTO=tslib:/dev/input/event0
    export QWS_DISPLAY=LinuxFB:mmWidth=480:mmHeight=272
    export QTDIR=/usr/local/Qt-4.5.1-arm-linux-CD
    export LD_LIBRARY_PATH=/home/spi/installQt/tslib-arm/lib
    export TSLIB_PLUGINDIR=/home/spi/installQt/tslib-arm/lib/ts
    export TSLIB_TSDEVICE=/home/spi/installQt/tslib-arm/lib/ts
    export TSLIB_TSEVENTTYPE=INPUT
    export TSLIB_CONFFILE=/home/spi/installQt/tslib-arm/etc/ts.conf
    export TSLIB_CONSOLEDEVICE=none

    If i try to run the application like this "./app -qws" nothing happen and "SEGV" appear in the terminal.

    When running the old ts_test, ts_calibrate they can use the touch screen.

    I am thinking of reconfiguring/making my qt source but this time not creating tslib myself but using the tslib from the rootfs i have this way normally I should be surce that Qt is linked to the very same tslib.


  • Lifetime Qt Champion

    What does a run through the debugger tell you ?


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.