Cross compilation with X11
-
@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 -
I already wrote it several times: if you want to cross-compile without any device connected, then copy the root filesystem of your device on your desktop machine and cross-compile Qt using it.
One thing to be clear: if you want to run your cross-compiled application, then you need your device accessible to run said application.
Out of curiosity, why do you want that much to cross-compile an application without any device connected to confirm it runs properly ?
-
I already wrote it several times: if you want to cross-compile without any device connected, then copy the root filesystem of your device on your desktop machine and cross-compile Qt using it.
One thing to be clear: if you want to run your cross-compiled application, then you need your device accessible to run said application.
Out of curiosity, why do you want that much to cross-compile an application without any device connected to confirm it runs properly ?
@SGaist
One of our device is not on network and cannot be mounted. We would like to cross compile the code using QTCreator and copy the executable manually on the target using a SD Card. Let us know if this is possible.
If yes, then what should be the hostname and credentials in QTCreator Add Device screen? -
Since your device is out of reach, it doesn't make sense to put anything there. Just don't add any device. Build your executable and then copy it on your SD card.
-
Since your device is out of reach, it doesn't make sense to put anything there. Just don't add any device. Build your executable and then copy it on your SD card.
@SGaist
Thanks! I have tried it in the same method. I am getting following error. Could please check it,usr/local/linaro/bin/../lib/gcc/arm-linux-gnueabihf/4.7.3/../../../../arm-linux-gnueabihf/bin/ld: note: 'clock_gettime@@GLIBC_2.4' is defined in DSO /media/SSHFS_X11//lib/arm-linux-gnueabihf/librt.so.1 so try adding it to the linker command line
/media/SSHFS_X11//lib/arm-linux-gnueabihf/librt.so.1: could not read symbols: Invalid operation