C 言語開発環境の構築法
[Up]
GNU binutils のコンパイル
ここでは Linux 上でのコンパイルを前提としている.他の環境で作成する場合
には手順や patch を修正する必要があるかもしれない.
また,EOTA への移植作業は as/gasp と ld に対してのみ行っており,他のコマ
ンドの作成にはさらなる修正が必要である.
- binutils-2.8.tar.gz を入手し,ソースコードを展開する.
- binutils-2.8-eota.patch
を入手する.
- binutils-2.8 のディレクトリの下で ./configure を実行する.
- patch -p1 < binutils-2.8-eota.patch として patch をあて
る.
- Makefile 中の newlib のパス名などを各自の環境にあわせて修正する.
- make all-gas all-ld とする.
- gas の下に as.new が,ld の下に
ld.new ができているはずだが,これが EOTA 用の as と ld と
なる.
lcc-4.1 のコンパイル
lcc のコンパイルに関しては,Linux 上で動作するバイナリと EOTA 用のバイナ
リのコンパイル手順が makefile の中に含まれるため,手動でコンパイルの手順
をなぞらなければならず注意が必要である.
- lcc-4.1.tar.gz を入手し,ソースコードを展開する.
- lcc-4.1-eota.patch
を入手する.
- lcc-4.1 の下で patch -p1 < lcc-4.1-eota.patch として
patch をあてる.
- 以下の作業を README に書かれた lcc のコンパイル手順を参照しながら行
う.
- バイナリを作成するディレクトリを決定し,環境変数 BUILDDIR にセット
する.bash を使っている場合
export BUILDDIR=directory
とする.
- lburg を作成するために make lburg を実行する.
- EOTA 上で動くコンパイラとライブラリを作成するため,
make CUSTOM=eota.mk rcc cpp liblcc
とする.
- etc/eota.c を各自の環境にあわせて修正する.初期設定では
/lib/lcc-eota 上に各種バイナリやライブラリが保存され,また
POSIX libc と組み合わせて実行ファイルを作成するとしている.
- EOTA 上で動く,lcc 本体をコンパイルするため
make CUSTOM=eota.mk HOSTFILE=etc/eota.c lcc
とする.
- BUILDDIR 以下に作成された不要な *.o や *.c
を削除する.また,lburg や librcc.a も Linux 上で
使用するものなので削除する.
lcc_test.bin について
lcc-4.1 や GNU binutils-2.8 の as, ld を収録して C の開発環境を構築した
試験用のバイナリを lcc_test.bin という名称で公開している.この
ディスクイメージには,lcc の rcc や cpp, GNU binutils の as, ld といった
コンパイルとリンクに必要な実行ファイルや POSIX libc の libc.a
や ITRON API を提供するlibitron.a などが保存された
lcc-eota というディレクトリを lha で圧縮した lcc.lha
というアーカイブファイルが収録されている.このディレクトリは
/lib のしたに置かれ,/lib/lcc-eota として使用されるこ
とが仮定されている.また,現在のところ C のヘッダファイルは収録されてい
ない.
lcc_test.bin を使用して C のコンパイルの試験を行う手順のみを示す.
- init> (rd.fm) load
- init> (sash -a) exec
- > mount /dev/rd /lib
- > cd /lib
- > /lha x /lcc.lha
- > cd lcc-eota
- > ls -l
- > setenv TMPDIR /lib
- > ./lcc -v test.c -o test
- > ls -l
- > ./test
画面に Hello と表示されればコンパイルに成功している.
C 言語の開発に newlib の libc.a を使う場合には,lcc-4.1 の
etc/eota.c の中で定義されている ld に与える引数を
適宜修正する必要がある.
newlib を利用した開発環境
nakanishi さんによって newlib-1.8.1 のライブラリと C のヘッダファイルを
整備した開発環境のバイナリパッケージが作成され,下記の URL で公開されて
いる.