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
$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
◆ビルド
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フォルダを作成して、
◆無事にビルド終了
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 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
$ ../../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 all
$ make install
◆無事にビルド終了
Cコードをコンパイルしての動作テストはまだやってません。後日・・・
構築したnewlibの中に、getwd,iconv,gettext等がいない様な気がします。
返信削除