コンパイラで認識されないコマンド行の引数はすべて、リンカーオプション、オブジェクトプログラムファイル名、またはライブラリ名である可能性があるとみなされます。
基本的には次のように区別されます。
認識されないオプション (- が付いている) には、警告メッセージが出力されます。
認識されない非オプション (- が付いていない) には、警告メッセージが出力されません。ただし、これらのオプションがリンカーに渡されて、リンカーに認識されない場合には、リンカーエラーメッセージが出力されます。
次に例を示します。
demo% f95 -bit move.f <- -bit is not a recognized f95 option f95: Warning: Option -bit passed to ld, if ld is invoked, ignored otherwise demo% f95 fast move.f <- The user meant to type -fast ld: fatal: file fast: cannot open file; errno=2 ld: fatal: File processing errors. No output written to a.out |
最初の例では、-bit は f95 では認識されず、このオプションはこれを解釈しようとするリンカー (ld) に渡されます。ld では 1 文字のオプションを続けて並べることもできるため、-bit が -b -i -tと解釈されます。-b、-i、-t はいずれも ld の有効なオプションであるからです。これは、ユーザーが意図している場合と、意図していない場合とがあります。
2 つ目の例では、f95 の共通のオプションとして -fast を指定しようとしていますが、先頭のハイフンが抜けています。この場合も、コンパイラは引数をリンカーに渡し、リンカーはこれをファイル名と解釈します。
前述の例から、コンパイラコマンドを指定する場合には、十分な注意が必要であることがわかります。