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。
最近、現実から逃げてる? ...そうかも
コメントをお書きください