趣味+メモ用のブログです。
GNU/Linux関連、OSS関連情報、調査事項になるでしょうが、何を書くか分かりません。
× [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 |
カレンダー
カテゴリー
フリーエリア
最新コメント
最新記事
(05/02)
(01/25)
(01/15)
(12/04)
(12/01)
最新トラックバック
ブログ内検索
最古記事
(02/21)
(07/12)
(07/12)
(07/18)
(07/20) |