Difference between revisions of "User:Hef/raspbian sdk"

From Pumping Station One
Jump to navigation Jump to search
 
Line 25: Line 25:
 
I needed to use the gcc 4.8 version for my compiled binaries to work on raspbian.  GCC 4.9 worked fine on alarmpi.
 
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 ===
+
== 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.  
 
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.  

Latest revision as of 12:28, 21 September 2015

raspbian dependencies

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

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

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

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.

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 [email protected]:/ /Volumes/raspbian/

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

./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


build, takes 43 minutes, 32 seconds on my 8 core MBP.

make -j8
make install -j8


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

sudo mkdir /usr/local/qt5.5-raspbian
chown pi:pi /usr/local/qt5.5-raspbian

Copy the files from the host machine to the pi.

rsync -auP /usr/local/qt5.5-raspbian [email protected]:/usr/local