C 言語開発環境の構築法


[Up]

GNU binutils のコンパイル

ここでは Linux 上でのコンパイルを前提としている.他の環境で作成する場合 には手順や patch を修正する必要があるかもしれない.

また,EOTA への移植作業は as/gasp と ld に対してのみ行っており,他のコマ ンドの作成にはさらなる修正が必要である.

  1. binutils-2.8.tar.gz を入手し,ソースコードを展開する.
  2. binutils-2.8-eota.patch を入手する.
  3. binutils-2.8 のディレクトリの下で ./configure を実行する.
  4. patch -p1 < binutils-2.8-eota.patch として patch をあて る.
  5. Makefile 中の newlib のパス名などを各自の環境にあわせて修正する.
  6. make all-gas all-ld とする.
  7. gas の下に as.new が,ld の下に ld.new ができているはずだが,これが EOTA 用の as と ld と なる.

lcc-4.1 のコンパイル

lcc のコンパイルに関しては,Linux 上で動作するバイナリと EOTA 用のバイナ リのコンパイル手順が makefile の中に含まれるため,手動でコンパイルの手順 をなぞらなければならず注意が必要である.

  1. lcc-4.1.tar.gz を入手し,ソースコードを展開する.
  2. lcc-4.1-eota.patch を入手する.
  3. lcc-4.1 の下で patch -p1 < lcc-4.1-eota.patch として patch をあてる.
  4. 以下の作業を README に書かれた lcc のコンパイル手順を参照しながら行 う.
    1. バイナリを作成するディレクトリを決定し,環境変数 BUILDDIR にセット する.bash を使っている場合

      export BUILDDIR=directory

      とする.
    2. lburg を作成するために make lburg を実行する.
    3. EOTA 上で動くコンパイラとライブラリを作成するため,

      make CUSTOM=eota.mk rcc cpp liblcc

      とする.
    4. etc/eota.c を各自の環境にあわせて修正する.初期設定では /lib/lcc-eota 上に各種バイナリやライブラリが保存され,また POSIX libc と組み合わせて実行ファイルを作成するとしている.
    5. EOTA 上で動く,lcc 本体をコンパイルするため

      make CUSTOM=eota.mk HOSTFILE=etc/eota.c lcc

      とする.
  5. BUILDDIR 以下に作成された不要な *.o*.c を削除する.また,lburglibrcc.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 のコンパイルの試験を行う手順のみを示す.

  1. init> (rd.fm) load
  2. init> (sash -a) exec
  3. > mount /dev/rd /lib
  4. > cd /lib
  5. > /lha x /lcc.lha
  6. > cd lcc-eota
  7. > ls -l
  8. > setenv TMPDIR /lib
  9. > ./lcc -v test.c -o test
  10. > ls -l
  11. > ./test
画面に Hello と表示されればコンパイルに成功している.

C 言語の開発に newlib の libc.a を使う場合には,lcc-4.1 の etc/eota.c の中で定義されている ld に与える引数を 適宜修正する必要がある.

newlib を利用した開発環境

nakanishi さんによって newlib-1.8.1 のライブラリと C のヘッダファイルを 整備した開発環境のバイナリパッケージが作成され,下記の URL で公開されて いる.
  • 「EOTAの紹介とBochs用HDイメージ配布のページ」