User:Hef/raspbian sdk

From Pumping Station: One Wiki
< User:Hef
Revision as of 07:28, 21 September 2015 by Hef (talk | contribs) (everything else =)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

raspbian dependencies

<syntaxhighlight lang="bash"> sudo apt-get install -y libpulse-dev libopenal-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libasound2-dev libgeoclue-dev libbluetooth-dev libicu-dev libglib2.0-dev libffi-dev libxslt1-dev libjasper-dev libmng-dev libtiff4-dev </syntaxhighlight>

raspbian has a 0.3.x series libwebp, which is too old for qt 5.5. Get a newer one.

<syntaxhighlight lang="bash"> wget http://downloads.webmproject.org/releases/webp/libwebp-0.4.3.tar.gz cd libwebp tar -xvzf libwebp-0.4.3.tar.gz cd libwebp-0.4.3/ ./configure make sudo make install </syntaxhighlight>

Creating a sysroot

compiler

Get a linaro cross compiler. For linux, there are official ones available, for OS X, I used http://www.welzels.de/blog/en/arm-cross-compiling-with-mac-os-x/comment-page-1/

I needed to use the gcc 4.8 version for my compiled binaries to work on raspbian. GCC 4.9 worked fine on alarmpi.

everything else

In this case a sysroot is just a copy of the important files for compiling built for the target system. It's also easier to just include a superset of the import files by grabbing pretty much everything.

There are a couple ways to do this, but I just created a case sensitive OS X volume and did and rsyncd the rpi to that volume.

<syntaxhighlight lang="bash"> rsync -P -rt --ignore-errors --delete --copy-unsafe-links --links --exclude /home --exclude /tmp --exclude /proc --exclude /sys --exclude /srv --exclude /var/cache --exclude /dev --exclude /var/log --exclude /root --exclude /run --exclude /lost+found --exclude /var/tmp --exclude /var --exclude /usr/share --exclude /etc --exclude /usr/lib/ssl pi@raspbian.local:/ /Volumes/raspbian/ </syntaxhighlight>

If you want a narrower approach, I suspect the important files are in

  • /usr/include
  • /usr/lib
  • /usr/local/include
  • /usr/local/lib
  • /lib
  • /opt/vc

Another common approach is to create an nfs server an the rpi2 and just mount nfs:/ from the rpi2 on the dev machine.

Build qt5.5 for the rpi2

<syntaxhighlight lang="bash"> ./configure -v -nomake examples -nomake tests -release -opengl es2 -device linux-rasp-pi2-g++ -device-option CROSS_COMPILE=/usr/local/linaro/arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf- -sysroot /Volumes/raspbian -prefix /usr/local/qt5.5-raspbian -confirm-license -opensource </syntaxhighlight>


build, takes 43 minutes, 32 seconds on my 8 core MBP. <syntaxhighlight lang="bash"> make -j8 make install -j8 </syntaxhighlight>


once make install is run, there will be a a /volumes/rasbpian/usr/local/qt5.5-raspbian folder. copy that back to the pi in the same location

First make a target location on the pi <syntaxhighlight lang="bash"> sudo mkdir /usr/local/qt5.5-raspbian chown pi:pi /usr/local/qt5.5-raspbian </syntaxhighlight>

Copy the files from the host machine to the pi. <syntaxhighlight lang="bash"> rsync -auP /usr/local/qt5.5-raspbian pi@raspbian.local:/usr/local </syntaxhighlight>