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

ここで 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 パッケージのインストール

修正を入れたソースパッケージをビルドしておいても良いでしょう.

** 参考資料 [#k44e6248]
- 各ソースパッケージの README ファイル類
- http://psas.pdx.edu/DebianCrossCompilerHowto/

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS