2015年8月5日水曜日

ARM用クロスコンパイラのビルド(Windows8.1+Cygwin+GCC5.2)

以前の記事から2年余り経過したのでゼロベースで最新環境にしてみた。

Cygwinのインストール
setup.exeをダウンロードしてきて実行。
Default状態から以下のパッケージを追加でInstallします。
今回は②〜③についてもCygwinのインストールパッケージを使用。
①Devel
②任意精度計算ライブラリ(GMP)
















③浮動小数点演算ライブラリ(MPFR)
















④複素数演算ライブラリ(MPC)
















Cygwinのインストールが完了。バージョン確認結果。














◆クロスコンパイラ関連ソースを入手
/usr/local/srcフォルダにソースをダウンロード&展開します。
因みに、今回のツリーは以下の様にしていますがお好みです。
/usr/local/gnu                      ...gccインストール先
              /src/gcc***             ...ソース
                    /binutils***
                    /newlib***
                    /build/gcc        ...ビルド用フォルダ
                             /binutils
                             /newlib

GCCコンパイラ
$wget http://ftpmirror.gnu.org/gcc/gcc-5.2.0/gcc-5.2.0.tar.bz2
$tar jxvf gcc-5.2.0.tar.bz2

binutils(アセンブラやリンカーなど)
$wget http://ftpmirror.gnu.org/binutils/binutils-2.25.tar.bz2
$tar jxvf binutils-2.25.tar.bz2

Newlib(組み込み向け標準ライブラリ)
$wget ftp://sources.redhat.com/pub/newlib/newlib-2.2.0-1.tar.gz
$tar zxf newlib-2.2.0-1.tar.gz















◆ビルド
$export LANG=C この定義が無いとエラーが発生するかも??
 以前のバージョンではエラーが起きたので念のため。
$export TARGET=arm-eabi
$export PREFIX=/usr/local/gnu ← インストール先のフォルダ

①binutilsのビルド
/usr/local/src/build/binutilsフォルダを作成して、
$ ../../binutils-2.25/configure --target=$TARGET --prefix=$PREFIX --enable-interwork --enable-multilib
$make all
$make install

②インストールしたbinutilsへのパスを通します。
$ export PATH=/usr/local/gnu/bin:$PATH

③GCC依存パッケージを追加します。
以前は支障は起きなかったのですが念のため(必要かな?

$cd /usr/local/src/gcc-5.2.0/contrib/
$./download_prerequisites

以下の様にソースに4つのパッケージがダウンロード&展開され、リンクが張られました。
















④GCCのビルド1パス目(Newlibのビルドに必要)
/usr/local/src/build/gccフォルダを作成して、

$ ../../gcc-5.2.0/configure --prefix=$PREFIX --target=$TARGET --enable-interwork --enable-multilib --enable-languages="c,c++" --with-newlib --with-headers=/usr/local/src/newlib-2.2.0-1/newlib/libc/include
$ make all-gcc
$ make install-gcc

⑤Newlibのビルド
/usr/local/src/build/newlibフォルダを作成して、

$ ../../newlib-2.2.0-1/configure --target=$TARGET --prefix=$PREFIX --enable-interwork --enable-multilib
$ make all
$ make install

⑥GCCのビルド2パス目
$ cd /usr/local/src/build/gcc
$ make all
$ make install

◆無事にビルド終了













Cコードをコンパイルしての動作テストはまだやってません。後日・・・

1 件のコメント:

  1. 構築したnewlibの中に、getwd,iconv,gettext等がいない様な気がします。

    返信削除