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