Cross compilation with X11
-
What you did is install the dependencies to build Qt for your computer. What you need to do is install them for your target. So the simplest way is to login to your target, install all the needed dependencies.
The you can e.g. mount your device filesystem in a place on your computer using e.g. sshfs and give the -sysroot parameter to configure pointing to where your mounted the device fs. It should then pick the headers and libraries from there and continue its work
-
@SGaist
Hi, I have followed same steps. It's works.
Is it possible build without target device ?
Could you please help me on this. Thanks in advance!@thanga said in [SOLVED]Qt cross compilation with X11:
Is it possible build without target device ?
Can you explain what you mean?
You can build without target device if you have a sysroot for it. -
@thanga said in [SOLVED]Qt cross compilation with X11:
Is it possible build without target device ?
Can you explain what you mean?
You can build without target device if you have a sysroot for it.I have mounted target device on /media/SSHFS_X11/ path on host machine (Ubuntu). While mounted Qt getting build, If I disconnect the target device. I am getting following error:
Basic XLib functionality test failed!
You might need to modify the include and library search paths by editing
QMAKE_INCDIR_X11 and QMAKE_LIBDIR_X11 in /home/lolveley/bin/qt-x11-opensource-src-4.5.1/mkspecs/linux-g++.May I know how to build without target device ? And how to configure sysroot on host (Ubuntu) machine ?
Could you please help me on this...
-
I have mounted target device on /media/SSHFS_X11/ path on host machine (Ubuntu). While mounted Qt getting build, If I disconnect the target device. I am getting following error:
Basic XLib functionality test failed!
You might need to modify the include and library search paths by editing
QMAKE_INCDIR_X11 and QMAKE_LIBDIR_X11 in /home/lolveley/bin/qt-x11-opensource-src-4.5.1/mkspecs/linux-g++.May I know how to build without target device ? And how to configure sysroot on host (Ubuntu) machine ?
Could you please help me on this...
-
@thanga Just create a directory and copy the content of your target device to that directory. Then use this directory as your sysroot instead of /media/SSHFS_X11.
@jsulm
I have copied /usr dir files to /media/SSHFS_X11, and tried to build But still and getting following error,
Basic XLib functionality test failed!
You might need to modify the include and library search paths by editing
QMAKE_INCDIR_X11 and QMAKE_LIBDIR_X11 in /home/lolveley/bin/qt-x11-opensource-src-4.5.1/mkspecs/linux-g++.Is it required to copy all the contents or /usr dir is fine?
Target device also Ubuntu OS stand alone device.
-
@jsulm
I have copied /usr dir files to /media/SSHFS_X11, and tried to build But still and getting following error,
Basic XLib functionality test failed!
You might need to modify the include and library search paths by editing
QMAKE_INCDIR_X11 and QMAKE_LIBDIR_X11 in /home/lolveley/bin/qt-x11-opensource-src-4.5.1/mkspecs/linux-g++.Is it required to copy all the contents or /usr dir is fine?
Target device also Ubuntu OS stand alone device.
@thanga You need to copy everything what is needed. You should copy at least /usr/lib and /usr/include, probably /lib as well.
It should then look like:/media/SSHFS_X11/usr/include /media/SSHFS_X11/usr/lib /media/SSHFS_X11/lib
Call configure with -v parameter to see what exactly is missing if it says "Basic XLib functionality test failed!".
-
If you don't use the same folder as you did when configuring the first time then you should point configure to the new location. Note that you should do a build from scratch to avoid any leftovers from interfering.
-
@thanga You need to copy everything what is needed. You should copy at least /usr/lib and /usr/include, probably /lib as well.
It should then look like:/media/SSHFS_X11/usr/include /media/SSHFS_X11/usr/lib /media/SSHFS_X11/lib
Call configure with -v parameter to see what exactly is missing if it says "Basic XLib functionality test failed!".
@jsulm
I have copied /usr/lib, /usr/include and /lib files to /media/SSHFS_X11/. I am getting following error now,/media/SSHFS_X11/usr/include/./X11/Xlib.h:38:23: fatal error: sys/types.h: No such file or directory
compilation terminated.
make: *** [xlib.o] Error 1
XLib disabled.
Basic XLib functionality test failed!
You might need to modify the include and library search paths by editing
QMAKE_INCDIR_X11 and QMAKE_LIBDIR_X11 in /home/user/qt-everywhere-opensource-src-4.8.6/mkspecs/qws/linux-arm-linaro-g++. -
@jsulm
I have copied /usr/lib, /usr/include and /lib files to /media/SSHFS_X11/. I am getting following error now,/media/SSHFS_X11/usr/include/./X11/Xlib.h:38:23: fatal error: sys/types.h: No such file or directory
compilation terminated.
make: *** [xlib.o] Error 1
XLib disabled.
Basic XLib functionality test failed!
You might need to modify the include and library search paths by editing
QMAKE_INCDIR_X11 and QMAKE_LIBDIR_X11 in /home/user/qt-everywhere-opensource-src-4.8.6/mkspecs/qws/linux-arm-linaro-g++.@thanga said in [SOLVED]Qt cross compilation with X11:
sys/types.h
Does this header file exist in /media/SSHFS_X11/usr/include ?
-
@thanga said in [SOLVED]Qt cross compilation with X11:
sys/types.h
Does this header file exist in /media/SSHFS_X11/usr/include ?
No. sys/types.h file is not available. But following files are present on /media/SSHFS_X11/usr/include.
aio.h crypt.h FLAC i386-linux-gnu ltdl.h neteconet protocols setjmp.h sudo_plugin.h utmp.h
aliases.h ctype.h fmtmsg.h iconv.h malloc.h netinet pthread.h sgtty.h syscall.h utmpx.h
alloca.h dbus-1.0 fnmatch.h ieee754.h math.h netipx pty.h shadow.h sysexits.h values.h
a.out.h dirent.h fstab.h ifaddrs.h mcheck.h netiucv pwd.h signal.h syslog.h video
argp.h dlfcn.h fts.h inttypes.h memory.h netpacket python2.7 sndfile.h tar.h vorbis
argz.h drm ftw.h langinfo.h mm netrom rdma sndfile.hh termio.h wait.h
ar.h elf.h _G_config.h lastlog.h mntent.h netrose re_comp.h sound termios.h wchar.h
arpa endian.h gconv.h libdrm monetary.h nfs regex.h spawn.h tgmath.h wctype.h
asm-generic envz.h getopt.h libgen.h mqueue.h nl_types.h regexp.h stab.h thread_db.h wordexp.h
assert.h err.h gettext-po.h libintl.h mtd nouveau resolv.h stdint.h time.h X11
autoopts errno.h GL libio.h nautilus-sendto nss.h rpc stdio_ext.h ttyent.h xcb
autosprintf.h error.h glob.h libltdl net obstack.h rpcsvc stdio.h ucontext.h xen
byteswap.h execinfo.h gnu-versions.h limits.h netash ogg sched.h stdlib.h ulimit.h xf86drm.h
c++ fcntl.h grp.h link.h netatalk paths.h scsi string.h unistd.h xf86drmMode.h
complex.h features.h gshadow.h linux netax25 poll.h search.h strings.h ustat.h xlocale.h
cpio.h fenv.h gstreamer-0.10 locale.h netdb.h printf.h semaphore.h stropts.h utime.h xorg -
Did you do a full copy of the sysroot over to your desktop ?
On a side note, unless you're locked to that version, at least use the latest of the Qt 4 series which is 4.8.7. Even better if you migrate to Qr 5.
-
Did you do a full copy of the sysroot over to your desktop ?
On a side note, unless you're locked to that version, at least use the latest of the Qt 4 series which is 4.8.7. Even better if you migrate to Qr 5.
-
Yes. I have copied all the files. May I know how to configured sysroot on local desktop ? Could please tell me the steps.
-
@thanga "Could please tell me the steps" - we already did.
Does this file exist on your target device?
Did you copy recursively (I mean: including subdirectories)? -
What do you mean by "without adding target device on Qt Creator" ?
-
We are mounting and adding Beagleboard device (on Qt Creator) for compiling Qt application.
Add device on Qt Creator:
Qt Creator -> Tools -> Devices -> Add DeviceMounting Device (Beagleboard):
/media/SSHFS_X11/Is it possible to compile Qt application without Beagleboard device ?
-
If you don't want to mount the device root filesystem while developing then you have to provide a sysroot to work with.
-
If you don't want to mount the device root filesystem while developing then you have to provide a sysroot to work with.
@SGaist
Hi,
thanks, I got confused on providing "sysroot".
I am looking for a way to cross compile Qt application for beaglebone without adding and mounting to Host PC either through SCP or as file system. Because to update and rebuild the Qt application each time its leading to mount the device to PC host.
Is there any other way to do? or it is not possible !!! -
If you don't want to mount your device while developing for it then you have to copy its root filesystem on your computer and use that copy as sysroot when cross-compiling Qt. You will also have to keep that copy up to date if you need to add a new dependency for your application.
-
If you don't want to mount your device while developing for it then you have to copy its root filesystem on your computer and use that copy as sysroot when cross-compiling Qt. You will also have to keep that copy up to date if you need to add a new dependency for your application.
@SGaist
Thanks! How to compile Qt application without device ?We are adding device on Qt Creator, is it possible to compile the application without device ? Please check the below link for your reference.
Qt Creator link: http://www.qnx.com/developers/docs/660/topic/com.qnx.doc.qt/images/qt_creator_add_device_button.png
http://docs.toradex.com/101754-01-qtcreator-linux-devices.png