Before we start, we need to have a R_Pi image with required package installed; To do it, either NFS mount for actual running R_Pi or mount on loop device. Either way works well. I have been done using NFS mount in the past, which is easy deploy process for application cross build and test. This time, I have choosen mount on loop device method due to I'd like to deploy environment on Windows Azure for use at outside from my office. I've created Debian Jessie image on Hyper-V with 32GB disk that is handy size to deploy for Azure VM.
See this page for how to run R_Pi on QEMU. I did not expand image size for this process, but just simply run downloaded 2015-02-16-raspbian-wheezy.img, and run following command; The packages installed below are required for Qt5 compile.
pi@raspberrypi ~ $ sudo apt-get update pi@raspberrypi ~ $ sudo apt-get upgrade pi@raspberrypi ~ $ sudo apt-get install libicu-dev \ libfontconfig1-dev \ libudev-dev \ libbz2-dev pi@raspberrypi ~ $ sudo shutdown -h now
cd /opt/raspi git clone https://github.com/raspberrypi/tools git clone https://gitorious.org/cross-compile-tools/cross-compile-tools.git
prefix=/opt/raspi rootfs=/opt/raspi/arm-linux-gnueabihf-rootfs destdir=/opt/raspi/arm-linux-gnueabihf tooldir=/opt/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin # assume 2015-02-16-raspbian-wheezy.ims has copied to $prefix/qemu directory sudo mount -o loop,offset=$((122880*512)) $prefix/qemu/2015-02-16-raspbian-wheezy.img $rootfs
And then, make a symbolic link for qt5 libraries to be installed;
mkdir $destdir/opt/qt5pi ln -s $destdir/opt/qt5pi $rootfs/opt
cd ../cross-compile-tools sudo ./fixQualifiedLibraryPaths $rootfs $tooldir/arm-linux-gnueabihf-g++
On my system, the 'file' command is v5.22 that cause a problem due to symbolic link file name does NOT wrapped by "`" and "'" so that script can not extract destination link name at all. I've done quick dirty fix by modify file command source code as following;
apt-get source file sudo apt-get build-dep file cd file-5.22+15 grep "symbolic link to" src/*.cIt shows 3 locations containing "symbolic link to", so modify "%s" to "`%s'" for all 3 locations, then compile it.
At your favorate work directory on the host;
git clone https://gitorious.org/qt/qt5.git cd qt5 ./init-repository
-- or --
wget http://download.qt-project.org/official_releases/qt/5.4/5.4.1/single/qt-everywhere-opensource-src-5.4.1.tar.gz
cd qt5
./configure -opengl es2 \
-device rasp-pi-g++ \
-device-option CROSS_COMPILE=$tooldir/arm-linux-gnueabihf- \
-sysroot $rootfs \
-opensource -confirm-license \
-optimized-qmake -reduce-exports -release -nomake tests \
-prefix /opt/qt5pi -no-pch -skip qttools
make -j4
make install
With the code from git repository (5.4.1+ when this was writing), no file is outputed on /opt/qt5pi but booth host(amd64) binaries and armhf binaries are installed to $rootfs/opt/qqt5pi. For qt-everywhere-oopensource-src-5.4.1.tar.gz download from qt-project.org has the different behavior, which install host binaries into /opt/qt5pi; and armhf binaries under $rootfs/opt/qt5pi
sudo apt-get install python sudo apt-get install libxcb1 libxcb1-dev libx11-xcb1 libx11-xcb-dev libxcb-keysyms1 libxcb-keysyms1-dev libxcb-image0 libxcb-image0-dev libxcb-shm0 libxcb-shm0-dev libxcb-icccm4 libxcb-icccm4-dev libxcb-sync-dev libxcb-render-util0 libxcb-render-util0-dev libxcb-xfixes0-dev libxrender-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-glx0-dev sudo apt-get install libxkbcommon-dev libudev-dev libwayland-dev libpng12-dev libjpeg62-turbo-dev libmtdev-dev autotools-dev autoconf automake bison flex libasound2-dev libxext-dev x11proto-xext-dev libxcursor-dev libxfixes-dev x11proto-fixes-dev libffi-dev libsm-dev libxcomposite-dev
This section explain NFS mount, instead of loop-mouint on /mnt.
sudo apt-get install nfs-kernel-server
Create or edit /etc/exports
/ *(rw,sync,no_subtree_check,no_root_squash,insecure)
Security issue: above setting allows root access to any host, which should be removed after install process completed.
Assume rpcbind is already running. If not, follow this.
http://www.ics.com/blog/building-qt-and-qtwayland-raspberry-pi#.VC4a_vmSzE1