- 追加された行はこの色です。
- 削除された行はこの色です。
* 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/
# 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/