"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 ? -
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.
-
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.
-
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.
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 touchscreenI 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 function
open_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 2After looking on the internet it seems a lot of people are having a really bad time using qt with arm devices, especially with tslib.
-
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.
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.0I 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 installNo 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/libload(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 installNo 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". -
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 -
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=noneIf 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.
-
What does a run through the debugger tell you ?