· 

WSLにクロスコンパイル環境

WSL入れたので、ARM用にgccをビルドします。まぁ、ここに書いてある通りです。先人の方すばらしい!

言われている通りにgccとbinutilsとnewlibを入手します。

https://ftp.gnu.org/gnu/gcc/gcc-11.1.0/

https://ftp.gnu.org/gnu/binutils/

ftp://sourceware.org/pub/newlib/

newlibのftpサイトについて、なんかieやらedgeやらでftpサイトに行けなくなったので、エクスプローラのアドレスバーに入れます。

で、エクスプローラのアドレスバーに\\wsl$って入れてフォルダ表示して、ダウンロードしたソースの圧縮ファイルを入れます。所有者がrootになっているので、hogeに変えます。

 

sudo chown hoge:hoge binutils-2.36.tar.gz

sudo chown hoge:hoge gcc-11.1.0.tar.gz

sudo chown hoge:hoge newlib-4.1.0.tar.gz

 

で、参考サイトの通りにビルド用のフォルダを作り、ソースをコピーします。

 

mkdir work

mkdir work/arm-none-eabi-gcc

mkdir work/src

cp binutils-2.36.tar.gz work/src

cp gcc-11.1.0.tar.gz work/src

cp newlib-4.1.0.tar.gz work/src

 

で、ソースフォルダに移動

 

cd work/src

 

で、参考サイトの通りにbinutilsをbuild(若干自分の環境に合わせて変えたところがあります)

 

export CFLAGS="-I/opt/local/include -O2"

export CXXFLAGS="-I/opt/local/include -O2"

export LDFLAGS="-L/opt/local/lib"

tar zxvf binutils-2.36.tar.gz

cd binutils-2.36

./configure --prefix=/home/hoge/work/arm-none-eabi-gcc --disable-werror --target=arm-none-eabi --enable-interwork --enable-multilib

make -j4

make install

 

で、参考サイトの通りにgccをbuild

 

cd /home/hoge/work/src

tar zxvf newlib-4.1.0.tar.gz

tar zxvf gcc-11.1.0.tar.gz

 

cd gcc-11.1.0

ln -s ../newlib-4.1.0/newlib .

mkdir build

cd build

 

で、ここでfortranのコンパイルをしたいので、--enable-languagesにfortranを追加(追加できる言語はここを見る)。で、

 

../configure --prefix=/home/hoge/work/arm-none-eabi-gcc  --target=arm-none-eabi --enable-interwork --enable-multilib --with-newlib --enable-langages="c,c++,fortran"

 

ってやるとエラーが出る。

 

configure: error: Building GCC requires GMP 4.2+, MPFR 3.1.0+ and MPC 0.8.0+.

Try the --with-gmp, --with-mpfr and/or --with-mpc options to specify their locations.  Source code for these libraries can be found at their respective hosting sites as well as at https://gcc.gnu.org/pub/gcc/infrastructure/.  See also http://gcc.gnu.org/install/prerequisites.html for additional info.  If you obtained GMP, MPFR and/or MPC from a vendor distribution package, make sure that you have installed both the libraries and the header files.  They may be located in separate packages.

 

ここによると、gccをビルドするために必要なものがcontrib/download_prerequisitesに書かれているらしい。で見てみると、

gmp='gmp-6.1.0.tar.bz2'

mpfr='mpfr-3.1.4.tar.bz2'

mpc='mpc-1.0.3.tar.gz'

isl='isl-0.18.tar.bz2'

ってなっている。

download_prerequisitesを実行すると勝手にとってきてくれるらしいのでやってみる。

 

cd ..

./contrib/download_prerequisites

 

で、

 

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

                                 Dload  Upload   Total   Spent    Left  Speed

100 2327k  100 2327k    0     0   422k      0  0:00:05  0:00:05 --:--:--  532k

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

                                 Dload  Upload   Total   Spent    Left  Speed

100 1249k  100 1249k    0     0   438k      0  0:00:02  0:00:02 --:--:--  438k

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

                                 Dload  Upload   Total   Spent    Left  Speed

100  654k  100  654k    0     0   287k      0  0:00:02  0:00:02 --:--:--  287k

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

                                 Dload  Upload   Total   Spent    Left  Speed

100 1619k  100 1619k    0     0   435k      0  0:00:03  0:00:03 --:--:--  435k

gmp-6.1.0.tar.bz2: OK

mpfr-3.1.4.tar.bz2: OK

mpc-1.0.3.tar.gz: OK

isl-0.18.tar.bz2: OK

All prerequisites downloaded successfully.

 

ってなるので、いけてるってことでしょう。

では、気を取り直して、

 

cd build

../configure --prefix=/home/hoge/work/arm-none-eabi-gcc  --target=arm-none-eabi --enable-interwork --enable-multilib --with-newlib --enable-langages="c,c++,fortran"

 

で、Makefileができたっぽいのでよいってことで。

 

make -j4

 

すっごい時間がかかる...

で、

 

make install

 

で、こちらもまぁまぁかかる。

で、おわったら、参考サイトと同じくPATHを通す。

 

export PATH=$PATH:/home/hoge/work/arm-none-eabi-gcc/bin

 

で、参考サイトと同じく--versionを試してみる。

 

arm-none-eabi-gcc --version

 

すると、

 

arm-none-eabi-gcc (GCC) 11.1.0

Copyright (C) 2021 Free Software Foundation, Inc.

This is free software; see the source for copying conditions.  There is NO

warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

 

ってなるので、いけてるんでしょう。

ついでに

 

arm-none-eabi-gfortran --version

 

ってすると、

 

GNU Fortran (GCC) 11.1.0

Copyright (C) 2021 Free Software Foundation, Inc.

This is free software; see the source for copying conditions.  There is NO

warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

 

ってなるので、こちらもいけてるんでしょう。

わ~い、fortran。

 

最近、現実から逃げてる? ...そうかも