RaspberryPi@Raspbian(wheezy)用にQt5beta1をCrossCompileする(その1)
RaspberryPiのRaspbian(wheezy)にて、Qt5beta1をCrossCompileする
Qt5beta1をRaspbian(wheezy)にてCrossCompileした時の覚書です。
既に、@IoriAYANEさんが、既にサクっとcross compileされちゃってます。
(Qt5をRaspberry Pi用にビルドする (理ろぐ))
こちらでは、Qt5のモジュールを個別にmakeした時のログと
けっこうトラブったので、トラブった事項の記載等をしておきます。
- The Raspberry Pi Foundation
- Qt5 CrossCompile参考サイト
RaspberryPi | Qt Wiki | Qt Developer Network
RaspberryPi_Beginners_guide | Qt Wiki | Qt Developer Network
***構成***
Host PC : Intel(R) Core(TM) i5-2430M CPU @ 2.40GHz ASUS U24
Host OS : Ubuntu12.04(precise) 64-bit
$ cat /proc/version_signature Ubuntu 3.2.0-30.48-generic 3.2.27 $ cat /proc/version Linux version 3.2.0-30-generic (buildd@batsu) (gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) ) #48-Ubuntu SMP Fri Aug 24 16:52:48 UTC 2012
Target board : RasberryPi model B
Target OS : Raspbian (wheezy) Hardflort (2012-08-16-wheezy-raspbian)
***Compile環境設定***
実は、X11のQt5beta1を先にしちゃっていたので、何が必要かわからなかったりするw とりあえず、X11でのQt5 コンパイル時に入れたのは下記サイトを参考にして
参考:http://qt-project.org/wiki/Building_Qt_5_from_Git
$ sudo apt-get install build-essential perl python git $ sudo apt-get install "^libxcb.*" libx11-xcb-dev libglu1-mesa-dev libxrender-dev
あとは、他ボードのCrossCompileも同じPCで行なっていたりしているので、
個別で必要そうなのは、
- GNU C Library
$ sudo apt-get install libc6-dev
- 32-bit shared libraries
- Embedded GNU C Library: 32-bit development libraries
$ sudo apt-get install ia32-libs libc6-dev-i386
こちらのTroubleshooting
に記載があったので64bitだと
sudo apt-get install lib32z1-dev
ぐらい?(本当に必要かわかりませんが、@IoriAYANEさんが64bitだとエラーになるとの記載をされていたのですが、僕の方でエラーにならなかったのは、この辺りを入れていたからかもしれません。)
***環境構築Dir構成***
(諸事情でRaspberryPi_Beginners_guide | Qt Wiki | Qt Developer Networkと構築Dir先やDir名は変えています。)
/ |--/opt | '--/DeveloperTool | | |--/Qt | | | '--/qt5-rpi-min/ - Qt5beta1 checkout先 | | '-- /RaspberryPi | | '--/Raspbian - Raspbian (wheezy)のimage置き場 | '--/toolchain - RaspberryPi用 Hardfloat CrossCompiler /mnt '--/rpi-rootfs - RaspberryPi用rootfsマウント先
***CrossCompile環境を整える***
RaspberryPIで使用するimageの展開
The Raspberry Pi Foundationのサイトから、Downloadをクリック。
Downloads | Raspberry Piから
2012-08-16-wheezy-raspbian.zipをダウンロードしていきます。
ダウンロード後に、ダウンロードサイトに記載しているSHA-1と一致しているか確認する。
$ sha1sum 2012-08-16-wheezy-raspbian.zip 63d16fd28369b6e05bf97f2d1758d56df6ed0ba9 2012-08-16-wheezy-raspbian.zip
imageを置くディレクトリに移動し、解凍する。
$ sudo mkdir -p /opt/DeveloperTool/RaspberryPi/Raspbian $ cd /opt $ sudo chown <USER>:<GROUP> -R ./DeveloperTool/RaspberryPi/Raspbian $ cd /opt/DeveloperTool/RaspberryPi/Raspbian $ mv ~/Downloads/2012-08-16-wheezy-raspbian.zip /opt/DeveloperTool/RaspberryPi/Raspbian $ unzip ./2012-08-16-wheezy-raspbian.zip
マウント先のディレクトリを作成して、マウントしておく。
$ sudo mkdir /mnt/rpi-rootfs $ sudo mount -o loop,offset=62914560 2012-08-16-wheezy-raspbian.img /mnt/rpi-rootfs
(memo)
パーティションの開始バイトで62,914,560byteとしているのは、
$ fdisk -l ./2012-08-16-wheezy-raspbian.img ディスク ./2012-08-16-wheezy-raspbian.img: 1939 MB, 1939865600 バイト ヘッド 255, セクタ 63, シリンダ 235, 合計 3788800 セクタ Units = セクタ数 of 1 * 512 = 512 バイト セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト ディスク識別子: 0x000108cb デバイス ブート 始点 終点 ブロック Id システム ./2012-08-16-wheezy-raspbian.img1 8192 122879 57344 c W95 FAT32 (LBA) ./2012-08-16-wheezy-raspbian.img2 122880 3788799 1832960 83 Linux
となっており、FAT32のパーティションには、booterやkernel image。
ex4にはroot file systemが入っています。
今回はroot file systemを参照したい為、2パーティション目の開始からマウントしています。
マウントのbyteは、
セクタサイズが512byteから
512✕122880=62,914,560
といった計算でoffset開始アドレスを算出しています。
CrossCompileを行うToolChainをダウンロードする。
$ cd /opt $ sudo mkdir ./toolchain $ sudo chown <USER>:<GROUP> ./toolchain $ cd ./toolchain $ wget http://blueocean.qmh-project.org/gcc-4.7-linaro-rpi-gnueabihf.tbz $ tar -xf gcc-4.7-linaro-rpi-gnueabihf.tbz
(memo)
このToolchainは、Hard float用のものなので、The Raspberry Pi Foundationのサイトのdownloadにある
Soft-float Debian “wheezy”には使用できません。Arch Linux ARMやQtonPiについては、どっちを使っているか不明・・・。
いちおコンパイラについて晒しておきます。
$ /opt/toolchain/gcc-4.7-linaro-rpi-gnueabihf/bin/arm-linux-gnueabihf-g++ -v 組み込み spec を使用しています。 COLLECT_GCC=/opt/toolchain/gcc-4.7-linaro-rpi-gnueabihf/bin/arm-linux-gnueabihf-g++ COLLECT_LTO_WRAPPER=/opt/toolchain/gcc-4.7-linaro-rpi-gnueabihf/bin/../libexec/gcc/arm-linux-gnueabihf/4.7.2/lto-wrapper ターゲット: arm-linux-gnueabihf configure 設定: /opt/dev/src/crosstool-ng/crosstool-ng-linaro-1.13.1-2012.07-20120720/builds/arm-linux-gnueabihf-linux/.build/src/gcc-linaro-4.7-2012.07/configure --build=i686-build_pc-linux-gnu --host=i686-build_pc-linux-gnu --target=arm-linux-gnueabihf --prefix=/opt/dev/src/crosstool-ng/crosstool-ng-linaro-1.13.1-2012.07-20120720/builds/arm-linux-gnueabihf-linux/install --with-sysroot=/opt/dev/src/crosstool-ng/crosstool-ng-linaro-1.13.1-2012.07-20120720/builds/arm-linux-gnueabihf-linux/install/arm-linux-gnueabihf/libc --enable-languages=c,c++,fortran --enable-multilib --with-arch=armv6zk --with-tune=arm1176jzf-s --with-fpu=vfp --with-float=hard --with-pkgversion='crosstool-NG linaro-1.13.1-2012.07-20120720 - Linaro GCC 2012.07' --with-bugurl=https://bugs.launchpad.net/gcc-linaro --enable-__cxa_atexit --enable-libmudflap --enable-libgomp --enable-libssp --with-gmp=/opt/dev/src/crosstool-ng/crosstool-ng-linaro-1.13.1-2012.07-20120720/builds/arm-linux-gnueabihf-linux/.build/arm-linux-gnueabihf/build/static --with-mpfr=/opt/dev/src/crosstool-ng/crosstool-ng-linaro-1.13.1-2012.07-20120720/builds/arm-linux-gnueabihf-linux/.build/arm-linux-gnueabihf/build/static --with-mpc=/opt/dev/src/crosstool-ng/crosstool-ng-linaro-1.13.1-2012.07-20120720/builds/arm-linux-gnueabihf-linux/.build/arm-linux-gnueabihf/build/static --with-ppl=/opt/dev/src/crosstool-ng/crosstool-ng-linaro-1.13.1-2012.07-20120720/builds/arm-linux-gnueabihf-linux/.build/arm-linux-gnueabihf/build/static --with-cloog=/opt/dev/src/crosstool-ng/crosstool-ng-linaro-1.13.1-2012.07-20120720/builds/arm-linux-gnueabihf-linux/.build/arm-linux-gnueabihf/build/static --with-libelf=/opt/dev/src/crosstool-ng/crosstool-ng-linaro-1.13.1-2012.07-20120720/builds/arm-linux-gnueabihf-linux/.build/arm-linux-gnueabihf/build/static --with-host-libstdcxx='-L/opt/dev/src/crosstool-ng/crosstool-ng-linaro-1.13.1-2012.07-20120720/builds/arm-linux-gnueabihf-linux/.build/arm-linux-gnueabihf/build/static/lib -lpwl' --enable-threads=posix --disable-libstdcxx-pch --enable-linker-build-id --enable-gold --with-local-prefix=/opt/dev/src/crosstool-ng/crosstool-ng-linaro-1.13.1-2012.07-20120720/builds/arm-linux-gnueabihf-linux/install/arm-linux-gnueabihf/libc --enable-c99 --enable-long-long スレッドモデル: posix gcc バージョン 4.7.2 20120701 (prerelease) (crosstool-NG linaro-1.13.1-2012.07-20120720 - Linaro GCC 2012.07)
cross-compile-toolsのチェックアウト(root file system)
$ cd /opt/DeveloperTool/RaspberryPi/Raspbian $ git clone git://gitorious.org/cross-compile-tools/cross-compile-tools.git $ git log -n 1 /*今回使用したハッシュ値です*/ commit d49f517eaa3bc819f78a01a5eead9e1a697ce6f5 Author: Johannes Zellner <johannes.zellner@nokia.com> Date: Mon Aug 20 20:34:36 2012 -0700 people like me need more specific usage description
とりあえず、次回にて、Qt5のチェックアウトおよびbuildについての
記載をしていきます。
next (その2)