単独のファイル、複数ファイルのコンパイル
ドライバ「fscc」は、基本的に通常のCコンパイラと同様の呼び出し方で利用できます。 例えば、コマンド
fscc -o hello hello.c
はソースファイル “hello.c” を処理し、実行ファイル “hello” を生成します。
あるプログラムが複数のソースファイルからなる場合も、これまで同様 コンパイラとリンカをそれぞれ呼び出す事で処理が可能です。
fscc -c main.c fscc -c libmine.c fscc -o myprogram main.o libmine.o
あるいは、単独のコマンドで
fscc -o myprogram main.c libmine.c
のように処理する事も可能です。ドライバは、引数に応じてコンパイラ・リンカを適切に呼び出して処理を行います。
処理可能なオプション
現在の Fail-Safe C コンパイラが処理可能な fscc の標準オプションは以下の通りです。
- -o
- 最終的な出力のファイル名を指定します。
- -c
- コンパイルのみを行います。リンク処理は行わず、.o ファイルを生成します。
- -E
- コンパイルの前処理のみを行います。
- -Idir
- ディレクトリ dir を、インクルードファイルの探索パスリストに追加します。
- -Ldir
- ディレクトリ dir を、ライブラリファイルの探索パスリストに追加します。
- -lfile
- ファイル libfile.a をライブラリ探索パスリストから探し、リンク処理を行います。
- -g
- デバッグ用のコードを出力します。生成される実行ファイルは極めて実行が遅くなりますが、より詳細な検査情報が得られます。Fail-Safe C では、コンパイル時に -g を指定した場合は、リンク時にも指定する必要があります。
- -Dsymbol
- 前処理シンボル symbol を定義します。
- -Usymbol
- 前処理シンボル symbol を未定義に戻します。
以上のオプションに加え、以下の非標準的なオプションも利用可能です。
- --safec-only
- Fail-Safe C の処理のみを行います。実マシンコードの生成は行いません。生成されるファイルの拡張子は “.safe.c” になります.
- --save-temps
- 中間段階で生成される全てのファイルをカレントディレクトリに残したままにします。デバッガを使う際に有用です。
- -Wc,opts
- オプション opts を、実マシンコード生成のために内部で呼ばれるCコンパイラ (gcc) に渡します。
- -Wl,opts
- オプション opts を、実マシンコード用のリンカ (ld) に渡します。
- -fopts
- コンパイラの動作を変更する指示を行います。
利用のTips
GNU Autoconf の利用
Fail-Safe C コンパイラは GNU Autoconf の基本的な利用をサポートしていますが、 Autoconf が(C言語としては安全でない)技巧を使うため、特殊な処理が必要です。 以下のようなオプションを configure 時に用いるとうまく動くかも知れません。
env CC=fscc CFLAGS='-fgnu-autoconf-workaround' \ ./configure --build=i386-linux
その他の情報
- 現在サポートされている標準関数と、将来の計画については こちらのページ を参照して下さい。
- 一部のプログラムは、メモリブロックの 4294967295 番目や 4294967292 番目のアドレスをアクセスしたと報告され実行が停止する事があります。これは、プログラムがC言語仕様を逸脱して、配列の「マイナス1番目」の要素のアドレスを用いている可能性があります。fscc のオプション -fptr-compare-signed-offset を用いると、症状が改善する場合があります。