Mac OS X Lion で x86_64 ELF

64bit の ELFプログラムを、Mac OS X で開発するための過程です。
英語のサイト参考にしていますが、日本語の訳が適当だったり間違ってたりする恐れ有ります……。

用意するのは以下の2つ。

  • binutils
  • gcc

例えば、
$HOME/cross
というディレクトリを作って、

mkdir build-gcc build-binutils COMMON_INSTALL


とかする。
gcc はソースコードとは別のディレクトリで configure 、 make する。

binutils


クロス開発環境に必要なツール群。gcc より先に make する。

../configure --prefix-$HOME/cross/COMMON_INSTALL --target=x86_64-elf --enable-64-bit-bfd
make install


--enable-64-bit-bfd
BFD library を使用。
BFD library は binutils がすべてのファイルにアクセスすることに使われるメソッド。

gcc


言わずと知れた gnu コンパイラ。

newlib をダウンロード、コンパイルし、そのディレクトリの位置にシンボリックリンクを貼る。

ln -s newlib-x.x.x $HOME/cross/build-gcc


../configure --prefix=$HOME/cross/COMMON_INSTALL --target=x86_64-elf --disable-bootstrap --enable-languages=c --enable-checking=tree,rtl,assert,types --disable-nls --with-newlib --without-headers --disable-libssp --disable-libquadmath
make install


--with-newlib
シンボリックリンクの貼られた newlib を使用。

--disable-bootstrap
ブートストラップビルド(ビルドしたプログラムを使って再ビルド)をさせない。

--without-headers
gcc に、target に関係している C library を教えない。

--disable-libssp
--disable-libquadmath
指定したら、こちらの環境ではコンパイル通った(適当)


その他 configure オプション

-program-prefix=
実行ファイル名の先頭に追加する文字列

-program-suffix=
実行ファイル名の後にに追加する文字列


ELF 実行ファイルの GDB

Mac OS X Lion というか Mac OS ではできなようです。
configure が通らない。

参考

http://wiki.osdev.org/GCC_Cross-Compiler_for_x86_64
http://lfsbookja.sourceforge.jp/svn.ja/chapter05/gcc-pass2.html

コメント

このブログの人気の投稿

相互インクルード対策

make error "Circular"

gdb操作