Qt app without window manager.
-
IIRC, building webkit statically has always been problematic.
Also, don't forget the licensing implication of building Qt statically
-
Ahhh painful.
The error now is:
@make[3]: Leaving directory
/home/user/Qt5.1Git/qt5/qtbase/src/network' make[3]: Entering directory
/home/user/Qt5.1Git/qt5/qtbase/src/network'
make[3]: Warning: File../../.qmake.cache' has modification time 1.6e+04 s in the future /home/user/Qt5.1Git/qt5/qtbase/bin/qmake -o Makefile network.pro Project MESSAGE: perl -w /home/user/Qt5.1Git/qt5/qtbase/bin/syncqt.pl -module QtNetwork -version 5.1.2 -outdir /home/user/Qt5.1Git/qt5/qtbase /home/user/Qt5.1Git/qt5/qtbase <srcbase> = /home/user/Qt5.1Git/qt5/qtbase <outbase> = /home/user/Qt5.1Git/qt5/qtbase make[3]: Leaving directory
/home/user/Qt5.1Git/qt5/qtbase/src/network'
make[3]: Entering directory/home/user/Qt5.1Git/qt5/qtbase/src/network' make[3]: Warning: File
../../.qmake.cache' has modification time 1.6e+04 s in the future
/home/user/Qt5.1Git/qt5/qtbase/bin/qmake -o Makefile network.pro
Project MESSAGE: perl -w /home/user/Qt5.1Git/qt5/qtbase/bin/syncqt.pl -module QtNetwork -version 5.1.2 -outdir /home/user/Qt5.1Git/qt5/qtbase /home/user/Qt5.1Git/qt5/qtbase
<srcbase> = /home/user/Qt5.1Git/qt5/qtbase
<outbase> = /home/user/Qt5.1Git/qt5/qtbase
@it is constantly printing this. Looks like it is stuck in a loop printing this all the time.
-
You seem to have some problem with your system clock...
You should restart your build from a clean source tree and use a shadow build directory.
-
What do you mean by system clock? I am using a virtual machine for this.
The only thing that is not working from that guide is : scl enable devtoolset-1.1 bash
Now i restarted the system and started a new build under root without webkit.
-
This line
@make[3]: Warning: File `../../.qmake.cache' has modification time 1.6e+04 s in the future
@made me think of a clock problem
-
Finally some progress.
The build finished fine. I also built my first app. All ok.
But when i try to run the app i get an error:
@QFontDatabase: Cannot find font directory /usr/local/Qt-5.1.2/lib/fonts - is Qt installed correctly?@At this stage i haven't executed make install . A note on the guide says :
@Note: Installation is only needed if you haven’t used the configure options -developer-build or -prefix “PWD/qtbase”. Otherwise you can just use Qt from the build directory.@And i didn't put -developer-build in my build configuration.
Could this be the problem? -
You need to have this folder on your target computer
-
Which directory? PWD/qtbase or /usr/local/Qt-5.1.2/lib/fonts ?
What should it contain?I will also try a build with -developer-build but currently gitorious is down.
-
/usr/local/Qt-5.1.2/lib/fonts, you need it on your target computer, the one running without window manager. It must contain the font files
-
Ok, on dev platform it worked. The compiled binary is around 150MB.
In the target at first it failed because it couldn't find libicudata.so.48 libicuuc.so.48 libicui18n.so.48 which is strange because i compiled it statically.
Do i need any thing extra in the .pro file for static building the app ?After copying the requested libs in the target /usr/lib a new error appeared:
@QXcbConnection Could not connect to display@ -
You can build a static library but still have shared dependency.
IIRC you need to tell your application which plugin you want to use
-
Ok, but why is qt still trying to use xcb, i built it for linuxfb?
My build configuration is:
@./configure -opensource -release -force-debug-info -confirm-license -static -qt-sql-mysql -qt-zlib -qt-libpng -qt-libjpeg -no-openssl -no-pch -linuxfb -nomake examples -nomake tests
@ -
Just wild guess, but it might be that linuxfb is built additionally to xcb
-
I just finnished rebuilding a fresh copy and if put -no-xcb the compilation fails with error:
@g++ -Wl,-rpath-link,/qt51/qtjsbackend/lib -o ../../bin/qmlplugindump .obj/release-static/main.o .obj/release-static/qmlstreamwriter.o .obj/release-static/qmlplugindump_plugin_import.o -L/qt51/qtdeclarative/lib -lQt5Quick -L/qt51/qtbase/lib -L/qt51/qtjsbackend/lib -lQt5Qml -lQt5V8 -lQt5Network -L/qt51/qtbase/plugins/platforms -lqminimal -lQt5PlatformSupport -lfontconfig -lfreetype -lXext -lX11 -lXrender -lQt5Gui -lQt5Core -licui18n -licuuc -lm -ldl -pthread -lgthread-2.0 -lglib-2.0 -lrt -lGL -lpthread
/usr/bin/ld: cannot find -lqxcb
collect2: error: ld returned 1 exit status
make[3]: *** [../../bin/qmlscene] Error 1
make[3]: Leaving directory/qt51/qtdeclarative/tools/qmlscene' make[2]: *** [sub-qmlscene-make_first] Error 2 make[2]: *** Waiting for unfinished jobs.... /qt51/qtbase/lib/libQt5Gui.a(qimage.o): In function
memset':
/usr/include/i386-linux-gnu/bits/string3.h:81: warning: memset used with constant zero length parameter; this could be due to transposed parameters
make[3]: Leaving directory/qt51/qtdeclarative/tools/qmlplugindump' make[2]: Leaving directory
/qt51/qtdeclarative/tools'
make[1]: *** [sub-tools-make_first] Error 2
make[1]: Leaving directory `/qt51/qtdeclarative'
make: *** [module-qtdeclarative-make_first] Error 2
@ -
Did you cleanup before rebuilding ?
-
It was a fresh build in a new directory.
-
Did you try with -qpa linuxfb ?
-
This is my configuration now:
@sudo ./configure -opensource -release -force-debug-info -confirm-license -static -qt-sql-mysql -qt-zlib -qt-libpng -qt-libjpeg -no-openssl -no-pch -qpa linuxfb -no-xcb -nomake examples -nomake tests@@Build options:
Configuration .......... accessibility alsa audio-backend avx avx2 c++11 clock-gettimeclock-monotonic compile_examples concurrent cups dbus evdev eventfd fontconfig
force_debug_info full-config getaddrinfo getifaddrs gif glib gstreamer gtk2 gtkstyle iconv
icu inotify ipv6ifname jpeg large-config largefile linuxfb medium-config minimal-config
mremap nis opengl pcre png pulseaudio qpa qpa reduce_exports reduce_relocations release rpath
small-config sse2 sse3 sse4_1 sse4_2 ssse3 static system-freetype v8 v8snapshot xlib xrender
zlib
Build parts ............ libs tools
Mode ................... release (with debug info)
Using C++11 ............ yes
Using PCH .............. no
Target compiler supports:
SSE2/SSE3/SSSE3 ...... yes/yes/yes
SSE4.1/SSE4.2 ........ yes/yes
AVX/AVX2 ............. yes/yesQt modules and options:
Qt D-Bus ............... yes (loading dbus-1 at runtime)
Qt Concurrent .......... yes
Qt GUI ................. yes
Qt Widgets ............. yes
JavaScriptCore JIT ..... yes (To be decided by JavaScriptCore)
QML debugging .......... yes
Use system proxies ..... noSupport enabled for:
Accessibility .......... yes
ALSA ................... yes
CUPS ................... yes
FontConfig ............. yes
Iconv .................. yes
ICU .................... yes
Image formats:
GIF .................. yes (in QtGui, using system library)
JPEG ................. yes (in QtGui, using bundled copy)
PNG .................. yes (in QtGui, using bundled copy)
Glib ................... yes
GStreamer .............. yes
GTK theme .............. yes
Large File ............. yes
libudev ................ no
Networking:
getaddrinfo .......... yes
getifaddrs ........... yes
IPv6 ifname .......... yes
OpenSSL .............. no
NIS .................... yes
OpenGL ................. desktop
OpenVG ................. no
PCRE ................... yes (bundled copy)
pkg-config ............. yes
PulseAudio ............. yes
QPA backends:
DirectFB ............. no
EGLFS ................ no
KMS .................. no
LinuxFB .............. yes
XCB .................. no
Session management ..... yes
SQL drivers:
DB2 .................. no
InterBase ............ no
MySQL ................ qt
OCI .................. no
ODBC ................. no
PostgreSQL ........... no
SQLite 2 ............. no
SQLite ............... yes (plugin, using bundled copy)
TDS .................. no
udev ................... no
xkbcommon .............. no
zlib ................... yes (bundled copy)
@It is building now, fingers crossed.
-
So far so great.
I built twice. It failed the first time because i forgot to ommit the webkit, pfff.
The second time it build perfectly with the above configuration. Thanks SGaist.
So i quickly built a simple gui app and copied it in the target system and voila a window appeared :) .
But, still a but, i don't have a mouse and keyboard. And the system is stuck at this point.
-
Great !
You can also move/remove the webkit folder if you want to avoid that.
Are both detected on your target system ?