Mac OS X Lion で x86_64 ELF
64bit の ELFプログラムを、Mac OS X で開発するための過程です。
英語のサイト参考にしていますが、日本語の訳が適当だったり間違ってたりする恐れ有ります……。
用意するのは以下の2つ。
例えば、
$HOME/cross
というディレクトリを作って、
とかする。
gcc はソースコードとは別のディレクトリで configure 、 make する。
binutils
クロス開発環境に必要なツール群。gcc より先に make する。
--enable-64-bit-bfd
BFD library を使用。
BFD library は binutils がすべてのファイルにアクセスすることに使われるメソッド。
gcc
言わずと知れた gnu コンパイラ。
newlib をダウンロード、コンパイルし、そのディレクトリの位置にシンボリックリンクを貼る。
--with-newlib
シンボリックリンクの貼られた newlib を使用。
--disable-bootstrap
ブートストラップビルド(ビルドしたプログラムを使って再ビルド)をさせない。
--without-headers
gcc に、target に関係している C library を教えない。
--disable-libssp
--disable-libquadmath
指定したら、こちらの環境ではコンパイル通った(適当)
実行ファイル名の先頭に追加する文字列
-program-suffix=
実行ファイル名の後にに追加する文字列
configure が通らない。
http://lfsbookja.sourceforge.jp/svn.ja/chapter05/gcc-pass2.html
英語のサイト参考にしていますが、日本語の訳が適当だったり間違ってたりする恐れ有ります……。
用意するのは以下の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_64http://lfsbookja.sourceforge.jp/svn.ja/chapter05/gcc-pass2.html
コメント
コメントを投稿