- 追加された行はこの色です。
- 削除された行はこの色です。
* debian wheezy 上でのクロスコンパイラのビルド [#pc01fe66]
debian 上でクロスコンパイル環境を作るには,以前は
> debian にクロスコンパイラをインストールするには apt-line に [[emdebian>http://www.emdebian.org/]] を追加して aptitude でインストール
というのが定番でしたが,最近は emdebian の活動が怪しく,パッケージデータベースが更新されていないようです.
というわけで,「debian 上で emdebian に頼らずに自前でクロスコンパイラをビルドしよう」という話です.
** 対象アーキテクチャ [#y4004f0f]
今回は armel (ARM EABI, little endian, soft float) を出力する toolchain を作成します.
他のアーキテクチャの場合は,「armel」と書いてある部分を適宜読み替えてください.
** debian ソースパッケージ [#he14f514]
実は,既に debian のソースパッケージ側でクロスコンパイラのビルドに対応していたりします.
というわけで,その道筋に沿って deb パッケージをビルドすることになります.
** xapt コマンドのインストール [#x896b248]
xapt コマンドは
- ホストアーキテクチャと異なるアーキテクチャのライブラリの deb パッケージをダウンロードして
- クロス環境用の deb パッケージに変換して
- インストールする
コマンドです.
何はともあれ,インストールしましょう.
xapt パッケージ自体は普通の deb パッケージなので
# apt-get install xapt
で,オンラインインストールできます.
** binutils [#s7fb61af]
まずは as, ld などのコマンドを含む binutils のビルドから.
# apt-get source binutils # binutils のソースパッケージをダウンロード・展開
# apt-get build-dep binutils # binutils パッケージのビルドに必要なパッケージをインストール
# cd binutils-x.yy # binutils のソースが展開されているディレクトリに移動
# TARGET=armel dpkg-buildpackage -b -uc -us # armel ターゲットの binutils パッケージをビルド
# cd ..
# dpkg -i binutils-arm-linux-gnueabi_*_i386.deb # deb パッケージのインストール
** GCC [#fda7e5e9]
次は,GCC をビルドします.
# apt-get source gcc-4.7 # gcc-4.7 ソースパッケージのダウンロード・展開
# apt-get build-dep gcc-4.7 # gcc-4.7 パッケージのビルドに必要なパッケージをインストール
# xapt -a armel -m libc6-dev # armel アーキテクチャの libc6-dev パッケージと,それに依存するパッケージのインストール
# apt-get install binutils-multiarch # binutils-multiarch パッケージのインストール
# cd gcc-4.7-* # gcc のソースコードが展開されているディレクトリに移動
# GCC_TARGET=armel dpkg-buildpackage -b -uc -us # gcc-4.7 パッケージをビルド
# cd ..
# dpkg -i *.deb # deb パッケージのインストール
** gdb [#vb8c266e]
gdb もビルドしてみましょう.
# apt-get source gdb # ソースパッケージのダウンロード・展開
# apt-get build-dep gdb # ビルドに必要なパッケージをインストール
#
# cd gdb-7.4.1+dfsg/