忍者ブログ
趣味+メモ用のブログです。 GNU/Linux関連、OSS関連情報、調査事項になるでしょうが、何を書くか分かりません。
[98] [97] [96] [95] [94] [93] [92] [91] [90] [89] [88]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

qemu上で、amrel linuxのカーネルデバッグをしようと思いたち、
まずは、arm クロス環境を作ることにしました。

最近の Debianは、パッケージで arm-gccが入っていないんですねぇ・・・


■ 参考URL
http://jr0bak.homelinux.net/~imai/pukiwiki/pukiwiki.php?%C6%FC%B5%AD%2F2014-03-28%2Fdebian%20wheezy%20%BE%E5%A4%C7%A4%CE%A5%AF%A5%ED%A5%B9%A5%B3%A5%F3%A5%D1%A5%A4%A5%E9%A4%CE%A5%D3%A5%EB%A5%C9

■ binutilsのコンパイル・インストール

$ apt-get source binutils
$ sudo apt-get build-dep binutils
$ cd binutils-2.22
$ TARGET=armel dpkg-buildpackage -b -uc -us 
$ cd ../
$ sudo dpkg -i binutils-arm-linux-gnueabi_2.22-8+deb7u2_i386.deb 
※「build-dep」はパッケージのビルドに必要なパッケージをインストールしてくれる。(知らなかった・・・)

■ gccのコンパイル・インストール

$ apt-get source gcc-4.7
$ apt-get build-dep gcc-4.7
$ sudo xapt -a armel -m libc6-dev
$ sudo apt-get install binutils-multiarch
$ cd gcc-4.7-4.7.2
$ GCC_TARGET=armel dpkg-buildpackage -b -uc -us
上記実施したところでエラーが発生。
もともと、「$HOME/src/cross/gcc-4.7-4.7.2」でコンパイルしていたはずが、
「$HOME/src/debug/cross/gcc-4.7-4.7.2」というおかしなディレクトリが
表示されていた。

そこで、強制的にシンボリックリンクしてビルドを再開
$ mkdir $HOME/src/debug; ln -s $HOME/src/cross $HOME/src/debug/cross
$ GCC_TARGET=armel  debian/rules build
$ GCC_TARGET=armel fakeroot debian/rules binary
$ cd ../
$ dpkg -i *.deb

■ GCCの確認

$ cat main.c 
#include <stdio.h>
int main(int argc, char** argv)
{
        printf( "Hello World\n" );
        return 0;
}
$ arm-linux-gnueabi-gcc-4.7 -static -o main main.c
$ qemu-arm ./main
Hello World

このままだと「-4.7」が邪魔なので、/usr/local/bin に、 gccのシンボリックリンクを作成。
# ln -s /usr/bin/arm-linux-gnueabi-cpp-4.7        /usr/local/bin/arm-linux-gnueabi-cpp
# ln -s /usr/bin/arm-linux-gnueabi-gcc-ar-4.7     /usr/local/bin/arm-linux-gnueabi-gcc-ar
# ln -s /usr/bin/arm-linux-gnueabi-gccgo-4.7      /usr/local/bin/arm-linux-gnueabi-gccgo
# ln -s /usr/bin/arm-linux-gnueabi-g++-4.7        /usr/local/bin/arm-linux-gnueabi-g++
# ln -s /usr/bin/arm-linux-gnueabi-gcc-nm-4.7     /usr/local/bin/arm-linux-gnueabi-gcc-nm
# ln -s /usr/bin/arm-linux-gnueabi-gcov-4.7       /usr/local/bin/arm-linux-gnueabi-gcov
# ln -s /usr/bin/arm-linux-gnueabi-gcc-4.7        /usr/local/bin/arm-linux-gnueabi-gcc
# ln -s /usr/bin/arm-linux-gnueabi-gcc-ranlib-4.7 /usr/local/bin/arm-linux-gnueabi-gcc-ranlib
# ln -s /usr/bin/arm-linux-gnueabi-gfortran-4.7   /usr/local/bin/arm-linux-gnueabi-gfortran

■ gdbのコンパイル&インストール

$ apt-get source gdb
$ audo apt-get build-dep gdb
$ cd gdb-7.4.1+dfsg
参照URLにあるように、「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

■ armel用のgdbのコンパイル

上記のままだと、「arm-linux-gnueabi-gdb」ができていない・・・
そこで、クロスコンパイル!!
$ mkdir gdb-7.4.1+dfsg+armel-cross/
$ cd gdb-7.4.1+dfsg+armel-cross
$ ../gdb-7.4.1+dfsg/configure --prefix=/usr/local --target=arm-linux-gnueabi
$ make
$ checkinstall

「checkinstall」は、コンパイル済みソースディレクトリから、.debファイルを作成してインストールしてくれる便利コマンド。
上記で、開発環境セットアップは完了。
PR


忍者ブログ [PR]
カレンダー
04 2024/05 06
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
フリーエリア
最新コメント
最新トラックバック
プロフィール
HN:
一乗寺 又兵衛
性別:
男性
職業:
コンパイル
趣味:
コンパイル
バーコード
ブログ内検索