debian wheezy 上でのクロスコンパイラのビルド †debian 上でクロスコンパイル環境を作るには,以前は
というのが定番でしたが,最近は emdebian の活動が怪しく,パッケージデータベースが更新されていないようです. というわけで,「debian 上で emdebian に頼らずに自前でクロスコンパイラをビルドしよう」という話です. 対象アーキテクチャ †今回は armel (ARM EABI, little endian, soft float) を出力する toolchain を作成します. 他のアーキテクチャの場合は,「armel」と書いてある部分を適宜読み替えてください. debian ソースパッケージ †実は,既に debian のソースパッケージ側でクロスコンパイラのビルドに対応していたりします. というわけで,その道筋に沿って deb パッケージをビルドすることになります. xapt コマンドのインストール †xapt コマンドは
コマンドです. 何はともあれ,インストールしましょう. xapt パッケージ自体は普通の deb パッケージなので # apt-get install xapt で,オンラインインストールできます. binutils †まずは 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 †次は,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 †gdb もビルドしてみましょう. # apt-get source gdb # ソースパッケージのダウンロード・展開 # apt-get build-dep gdb # ビルドに必要なパッケージをインストール # cd gdb-* ここで debian/rules ファイルの以下の行を修正します. (誤)sed -i "/Package: gdb64/,\$ d" -i "/Package: gdb-multiarch/,\$ d" debian/control ↓ (正)sed -i -e "/Package: gdb64/,\$ d" -e "/Package: gdb-multiarch/,\$ d" debian/control ビルド作業に戻ります. # TARGET=armel dpkg-buildpackage -b -uc -us # パッケージのビルド # cd .. # dpkg -i *.deb # deb パッケージのインストール 修正を入れたソースパッケージをビルドしておいても良いでしょう. 参考資料 †
|